说明:其实没有绝对的规范,到达90%即可。
理解RESTful架构:
RESTful API 设计指南:
GitHub标准RESTful API:https://api.github.com/
教程收集:
%E8%AE%BE%E8%AE%A1/2015/08/17/Restful%20API%20%E7%9A%84%E8%AE%BE%E8%AE%A1%E8%A7%84%E8%8C%83.html
(以下内容转自此篇文章)
https://www.zhihu.com/question/28557115
URI
URI规范
不要用大写
单词间使用下划线‘_‘
不使用动词,资源要使用名词复数形式,如:user、rooms、tickets
层级 >= 三层,则使用‘?‘带参数
users/1/address/2/citys (bad) /citys?users=1&address=2; (good)
Request
Method
GET:盘问资源
POST:创建资源
PUT/PATCH
PUT:全量更新资源(供给转变后的完整资源)
PATCH:局部更新资源(仅供给转变的属性)
DELETE:删除资源
安适性与幂等性
安适性:任意多次对同一资源操纵,都不会导致资源的状态变革
幂等性:任意次对同一资源操纵,对资源的转变是一样的
Method安适性幂等性
GET
√
√
POST
×
×
PUT
×
√
PATCH
×
√
DELETE
×
√
兼容
很多客户只撑持GET/POST请求,一般有两种方法模拟PUT等请求
添加_method参数
/users/1?_method=put&name=111
添加X-HTTP-Method-Override请求头 (我们使用这种方法)
X-HTTP-Method-Override: PUT
参数
Method
GET
非id的参数使用‘?‘方法传输
/users/1?state=closed
POST、PATCH、PUT、DELETE非id的参数使用body传输,并且应该encode
过滤
?type=1&state=closed
排序
+升序,如?sort=+create_time,按照id升序
-降序,如?sort=-create_time,按照id降序
分页
?limit=10&offset=10
limit:返回记录数量
offset:返回记录的开始位置
单参数多字段
使用, 分隔断绝分手,如
/users/1?fields=name,age,city
版本控制
三种方案:
在uri中插手版本: /v1/room/1
Accept Header:Accept: v1
自界说 Header:X-Imweb-Media-Type: imweb.v1 (我们使用此方案)
自界说Media-Type参考资料
状态码
告成
CodeMethodDescribe200 ALL 请求告成并返回实体资源
201 POST 创建资源告成
客户端错误
CodeMethodDescribe400 ALL 一般是参数错误
401 ALL 一般用户验证掉败(用户名、暗码错误等)
403 ALL 一般用户权限校验掉败
404 ALL 资源不存在(github在权限校验掉败的情况下也会返回404,为了防备一些私有接口泄露出去)
422 ALL 一般是须要字段缺掉或参数格局化问题
处事器错误
CODEMETHODDESCRIBE500 ALL 处事器未知错误
以上是常见的状态码,完整的状态码列表在这状态码
HATEOAS
在介绍HATEOAS之前,先介绍一下REST的成熟度模型
在介绍 HATEOAS 之前,先介绍一下 Richardson 提出的 REST 成熟度模型。该模型把 REST 处事凭据成熟度划分成 4 个条理:
第一个条理(Level 0)的 Web 处事只是使用 HTTP 作为传输方法,实际上只是长途要领挪用(RPC)的一种具体形式。
第二个条理(Level 1)的 Web 处事引入了资源的观点。每个资源有对应的标识符和表达。
第三个条理(Level 2)的 Web 处事使用差此外 HTTP 要领来进行差此外操纵,并且使用 HTTP 状态码来暗示差此外功效。如 HTTP GET 要领来获取资源,HTTP DELETE 要领来删除资源。
第四个条理(Level 3)的 Web 处事使用 HATEOAS。在资源的表达中包罗了链接信息。客户端可以按照链接来发明可以执行的行动。
简述