RESTful 设计理论

RESTful 设计:

1.协议
通信协议:https

2.域名
部署在API专用域名下,除非API很简单(https://www.example.com/api)
https://api.example.com

3.版本
应将版本号放在url中(.../v1/...);也可以放在http头中

4.路径
不能有动词,只能有名词;所用名词常和数据库表格名对应
(ps:https://api.example.com/v1/users)

5.HTTP动词
GET(SELECT):获取一个或多个 eg: /users /users/id /users/id/hobbys
POST(CREATE):新增 eg: /users
PUT(UPDATE):更新整个对象 eg: /users/id
PATCH(UPDATE):更新部分属性 eg: /users/id
DELETE(DELETE):删除 eg: /users/id /users/id/hobbys/id

HEAD:获取元数据
OPTIONS:获取可以修改的属性

6.过滤信息(类似分页)
?limit=10 条数
?offset=10 开始位置
?page=2&per_page=100 分页
?sortby=name&order=ase 属性排序、排序规则
?name=aaa 添加筛选条件

7.常见状态码(Status Codes)
200 OK 幂等操作
201 CREATED - (post/put/patch) 用户新增或修改成功
202 Accepted - (*) 表示已进入后台排队(异步任务)
204 NO CONTENT - [delete] 删除数据成功
400 Invalid request - (post/put/patch) 请求有误,没有进行修改操作,幂等操作
401 Unauthorized - (*) 没有权限
403 Forbidden - (*) 有权限,但被禁止访问
404 Not Found - (*) 不存在的资源,幂等操作
406 Not Accepted - (get) 请求参数格式错误
410 Gone - (get) 资料被删除,且不会再得到
422 Unprocesable entity - (get/put/patch) 创建对象,发生验证错误
500 Internal server error - (*) 服务器发生错误,无法判断请求是否成功

8.错误处理
状态码为4xx,返回error信息 :{ error:"Invalid is fail"}

9.返回结果
GET: /users   返回列表      /users/id 返回单个对象
POST: /users   返回新增对象
PUT: /users/id  返回整个对象
PATCH: /users/id  返回完整对象
DELETE: /users/id  返回空文档

10.Hypermedia API
向api.example.com根目录发送请求,返回一个文档
{
"user_url":"https://api.example.com/user",
//...
}
向子目录发送请求,返回单个说明文档:
{
"documentation_url":"https://api.example.com/v1/users",
"message":"user infomation"
}

11.其它
1.api的身份认证应该使用OAuth 2.0 框架
2.数据格式尽量用JSON

原文地址:https://www.cnblogs.com/DONET-LC/p/Restful.html

时间: 2024-08-27 15:43:42

RESTful 设计理论的相关文章

关系模式设计理论 - 数据库系统原理

模式设计理论主要包括三方面的内容:数据依赖.范式.模式设计方法.数据依赖研究数据之间的联系,起着核心的作用:范式是关系模式的标准:模式设计方法是自动化设计的基础. 关系模式的设计准则 关系模式的冗余和异常 关系模式的冗余指数据冗余.数据冗余 指同一个数据在系统中多次重复出现,这一直是影响系统性能的大问题.在文件系统中由于文件之间没有联系,一个数据会在多个文件中出现.数据库系统克服了文件系统的这种缺陷. 由于数据冗余,对数据操作时就会引起各种异常:修改异常.插入异常.删除异常.例如,关系模式 R(

迈向大数据架构师 - 架构师转型方法与架构设计理论

迈向大数据架构师 - 架构师转型方法与架构设计理论课程学习地址:http://www.xuetuwuyou.com/course/233课程出自学途无忧网:http://www.xuetuwuyou.com课程摘自<大数据系统架构分析师成长之路>:http://www.xuetuwuyou.com/course/200 1.课程目标通过本课程的学习,让学员了解到什么是系统架构师,什么大数据系统架构师,两者的区别与联系,程序员与架构师的不同,程序员如何向架构师转型,一个架构师工作日常及必须修炼的

数字资产交易平台开发的架构设计理论架构

数字资产交易平台开发的架构设计理论架构架构和设计,这是整个系统的灵魂步骤.一个架构不过关,到后面的问题可能是毁灭性的(相同业务量,相近的硬件,你的系统只跑两年就很卡,人家跑五年没事,很可能就是架构没做好);系统设计不过关,必定走不久,未来业务变化,可能又要换系统...所以想要稳定的系统就要找靠谱的开发商,138.2311-8291源中瑞科技. 1)业务流程设计(可能涉及到业务流程重组,最费事又可能最反复,也是风险最高的地方); 2)系统架构设计(cs还是bs?有没有app?私有部署还是公有云部署

关系数据库设计理论

关系数据库设计理论 函数依赖 记 A->B 表示 A 函数决定 B,也可以说 B 函数依赖于 A. 如果 {A1,A2,... ,An} 是关系的一个或多个属性的集合,该集合函数决定了关系的其它所有属性并且是最小的,那么该集合就称为键码. 对于 A->B,如果能找到 A 的真子集 A',使得 A'-> B,那么 A->B 就是部分函数依赖,否则就是完全函数依赖. 对于 A->B,B->C,则 A->C 是一个传递函数依赖. 异常 以下的学生课程关系的函数依赖为 {

MySQL性能管理及架构设计 --- 理论篇

              MySQL性能管理及架构设计  一丶IO,内存,吞吐量理解 IO     是指设备与设备之间操作次数,比如mysql与php互插内存   是程序运行都在里面执行吞吐量 是单位时间内处理的请求数量 二丶究竟是myisa还是innodb ? 业界争论不休的情况下,低版本默认引擎是myisam,高版本mysql默认引擎是innodb,也是innodb高版本一个梗吧,尽量使用innodb引擎,不要混合使用myisam这两种引擎,因为在事物中,如果回滚的话 ,表连接 myisa

关系模式设计理论

规范化: 一个低级范式,通过模式分解可以转化为若干个高级范式的关系模式,即为规范化. 范式: 目前关系数据库有六种范式,咱们最常用的是第一到第三范式.各范式呈递次规范,越高的范式数据冗余越小. 第一范式:(不再分) 范式的基础,所有范式都必须满足第一范式,其他范式都以第一范式为基础. 第二范式: 第一范式基础上消除部分依赖,要求实体的属性完全依赖于主键. 若存在局部依赖,需将这个属性和候选键的那一部分分离出来形成新的实体. 例 (学号,姓名,系别,住址,课程,成绩): 存在(学号,课程)-->(

RESTful设计原则和样例(开发前后台接口)

参考博文: http://www.cnblogs.com/artech/p/restful-web-api-02.html 维基百科:https://zh.wikipedia.org/wiki/REST 目前在三种主流的Web服务实现方案中,因为REST模式与复杂的SOAP和XML-RPC相比更加简洁,越来越多的web服务开始采用REST风格设计和实现.例如,Amazon.com提供接近REST风格的Web服务进行图书查找:雅虎提供的Web服务也是REST风格的. 要点及标准 需要注意的是,RE

RESTful设计要素

资源路径 在RESTful架构中,每个网址代表一种资源,所以网址中不能有动词,只能有名词.一般来说API中的名词应该使用复数. HTTP动词 对于资源的操作(CURD),由HTTP动词表示. >GET:从服务器取出资源 >POST: 在服务器新建一个资源 >PUT : 在服务器更新资源(客户端提供改变后的完整资源) >PATCH:在服务器更新资源(客户端提供改变的属性) >DELETE: 在服务器删除资源 过滤信息 如果记录数量很多,服务器不可能都将他们返回给用户.API应该

数据库设计理论与实践&#183;&lt;二&gt;概念设计与逻辑设计

2一.概念设计 1.1 概念设计关键知识 1.2 辨析 实体与属性的区别: ①实体能进一步用多个属性来描述,属性却不能,属性是不可再细分/分割的原子项. ②实体内部或者多个实体之间存在联系,而属性无. 实体与联系的区别: ①联系不能单独存在,必须由它联系的双方或者多方共同决定,而实体不需要. ②联系的码由它关联的实体的主码决定,而实体的码和其它实体或联系无关. 一般很多人容易将三元联系和三个二元联系混淆. 1.3 附属图 图1.1 三元联系(三个实体的关系) 图1.2 一元联系 图1.3 各类属