【项目开发】RESTful架构及RESTful API设计指南

devtools/2024/11/14 0:17:36/

未经许可,不得转载。

文章目录

    • 前言
    • 起源
    • 名词解释
      • 资源(Resources)
      • 表现层(Representation)
      • 状态转化(State Transfer)
    • RESTful架构的基本特征
    • REST API设计指南
      • 一、协议
      • 二、域名
      • 三、版本(Versioning)
      • 四、路径(Endpoint)
      • 五、HTTP动词
      • 六、过滤信息(Filtering)
      • 七、状态码(Status Codes)
      • 八、错误处理(Error handling)
      • 九、返回结果
      • 十、Hypermedia API
    • 常见设计误区

前言

随着互联网的发展,越来越多的人开始意识到网站即软件,并且这种软件具有全新的特性。现代网站采用客户端/服务器模式,建立在分布式系统架构上,依托互联网进行通信,通常面临高延迟(high latency)和高并发等挑战。

网站开发已经逐渐趋向于采用软件开发的模式。传统上,软件开发和网络通信是两个不同的领域,彼此之间很少交集。软件开发更专注于单机环境,而网络则主要研究系统之间的通信。然而,随着互联网的兴起,这两个领域的界限逐渐模糊。我们现在必须考虑如何在互联网环境中开发和部署软件。

REST(Representational State Transfer)是一种软件架构风格,旨在指导万维网架构的设计和开发。 REST 定义了一组约束,规定了分布式、互联网规模的超媒体系统(如 Web)的架构应如何运行;同时强调统一的接口、组件的独立部署、组件之间交互的可扩展性,以及创建分层架构以促进缓存以减少用户感知的延迟、加强安全性并封装遗留系统。

它结构清晰、符合标准、易于理解且扩展性强,因此广泛应用于各大网站的开发中。


http://www.ppmy.cn/devtools/133287.html

相关文章

[SWPUCTF 2022 新生赛]Power! 反序列化详细题解

知识点: PHP反序列化(执行顺序) 构造POP链 代码审计 题目主页: 输入框可以输入内容,习惯性先查看一下页面的源代码,收集信息 发现源码中有提示参数source 先不急,再看一下其他信息 是apache服务器,php版本为7.4.30 url传参 ?sourceindex.php 回显了index.php的源码 …

ESLint 使用教程(一):从零配置 ESLint

前言 在现代前端开发中,代码质量和风格一致性是团队合作和项目维护的重要因素。而 ESLint 作为一款强大的 JavaScript 静态代码分析工具,能够帮助开发者发现和修复代码中的潜在问题。本文将详细介绍 ESLint 的常用规则配置,并结合实际应用场…

ubuntu下aarch64-linux-gnu(交叉编译) gdb/gdbserver(二)

ubuntu下aarch64-linux-gnu(交叉编译) gdb/gdbserver(二) 本教程作为gdb/gdbserver编译安装教程的一个补充,教会大家如何使用gdb/gdbserver进行远程调试。 如上图所示,我们需要将编译后的gdbserver上传至目标设备,其上…

7 软件维护

软件维护 1、软件维护概念和分类1.1 软件维护概念1.1 软件维护分类完善性维护纠错性维护适应性维护预防性维护 2、软件维护注意事项3、软件维护技术3.1 程序理解3.2 软件再工程3.3 软件逆向工程 1、软件维护概念和分类 1.1 软件维护概念 IEEE/EIA 12207[ISO/IEC2008]中对软件…

LeetCode35:搜索插入位置

原题地址:. - 力扣(LeetCode) 题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算…

泉州市工业和信息化局关于开展排查运维安全管理系统安全漏洞的通知

文章目录 引言附件1: 受影响版本和修复方案附件2:漏洞排查处置情况反馈表引言 接国家网络与信息安全信息通报中心通报,一款由北京圣博润高新技术股份有限公司研发的运维安全管理系统(俗称堡垒机)存在命令执行漏洞(CNVD-C-2024-781563、NVDB-CNVDB-2024768604)。攻击者可…

使用k8s管理应用以及java案例

使用k8s管理应用 制作镜像控制器管理podpod数据持久化创建service四层代理创建ingress规则对外发布应用日志与监控应用案例(因无开发代码,最终跑不起来)编写java代码编写 Dockerfile构建 Docker 镜像在 Kubernetes 上运行应用程序创建 Kubernetes 服务service创建in…

Android 如何实现不编译指定的apk,不加载系统应用

1.把Android.mk改为Android.mk_bak 2.删除当前Android.mk内容变为空mk 或者注释掉里面所有内容 3.以上方法存在些许问题,因为只是把当前的mk屏蔽了,但其他路径的类似应用也会编译进去。 在内置应用mk下添加需要覆盖的应用,这个比较全面&…