0.命名方式
在rest风格中,每一个操作对象都是一个 "资源",所以在命名我们的接口时,使用的都是名词 而不是动词。在使用时尽量避免出现get /delete/ find等词语 例如:
错误: GET /getFriendById?id = 1
正确 : GET /friends/1
1.客户端和服务器的约定
1.1
在客户端和服务端,双方都要知道通讯的格式,格式在HTTP-Header中指定
Content-Type 定义请求格式
Accept 定义系列可接受的响应格式
1.2以restEasy为例子:在服务器端可以指定注解
@Consumer和content-type对应
----
表明匹配客户端此次请求的数据格式。
@Producs和accept对应。
------
表明匹配客户端期待服务器返回的数据格式。
2.对简单资源的 crud(增删改查)
HTTP Method 与 CURD 数据处理操作对应
四个表示操作方式的动词:GET、POST、PUT、DELETE。
它们分别对应四种基本操作:GET用来获取资源,POST用来新建资源(也可以用于更新资源),PUT用来更新资源,DELETE用来删除资源。
例子: 对user的crud
POST /user?name=xxx....
DELETE /user/1
PUT /user/1?name=xxxx...
GET /user/1
3.对组合资源的访问
上面说到子资源的访问是通过父资源来导航的,一般是通过id,也就是子资源的生命周期是依赖于父资源的。
一个常见的例子是 家庭--宝宝,通过家庭的id导航到某一个宝宝的id
GET /family/1/baby/1 --获取家庭1的1号宝宝信息
4.尽量避免访问的路径过深
在上面的例子我们知道可以在url通过id来导航查询,但这也会带来麻烦,列如:
在四川省(代码0) 成都(代码2) xx学校3的4班下面有一个学号为5的学生
过深的导航容易导致url膨胀,不易维护,如
GET /provience/0/city/2/schools/3/classs/4/students/5,
设计的路径如果过于冗余,则可以使用如下的解决方案:
如GET /students?provience=0&city=2&schools=3&classs=4&students=5
5.使用错误码
http自带的错误码可以使用起来,更详细的可以自己封装一些错误码。
200 – OK – 一切正常
201 – OK – 新的资源已经成功创建
204 – OK – 资源已经成功擅长
304 – Not Modified – 客户端使用缓存数据
400 – Bad Request – 请求无效,需要附加细节解释如 "JSON无效"
401 – Unauthorized – 请求需要用户验证
403 – Forbidden – 服务器已经理解了请求,但是拒绝服务或这种请求的访问是不允许的。
404 – Not found – 没有发现该资源
422 – Unprocessable Entity – 只有服务器不能处理实体时使用,比如图像不能被格式化,或者重要字段丢失。
500 – Internal Server Error – API开发者应该避免这种错误。
使用详细的错误包装错误:
{
“errorCode”:'0011',
"errors": “auth failed”
}