什么是 RESTful API 风格
一种软件架构风格、设计风格,而不是标准,只是提供了一组设计原则和约束条件。它主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。
为什么要用 RESTful API 风格
适用于前后端分离,后端组专注于业务功能的开发,提高开发效率。
近年随着移动互联网的发展,各种类型的客户端层出不穷,Restful可以通过一套统一的接口为PC、微信(H5)、IOS和Android提供服务,这样的接口不需要前端样式,只提供数据。其实就是,后端一套代码,适配所有的端。
如何设计 RESTful API
RestfulAPI
就是由后台(SERVER端)来提供接口,前端来调用。前端调用API
向后台发起HTTP
请求,后台响应请求将处理结果反馈给前端。也就是说Restful
是典型的基于HTTP
的协议。
RESTful API 特征
Resource 资源
资源就是网络上的一个实体、一段文本、一张图片或者一首歌曲。资源总是要通过一种载体来反应它的内容。文本可以用TXT
,也可以用HTML
或者XML
、图片可以用JPG格式或者PNG
格式,JSON
是现在最常用的资源表现形式。
统一接口
Restful风格的数据元操作CRUD(create,read,update,delete)
分别对应HTTP
方法:GET
用来获取资源,POST
用来新建资源(也可以用于更新资源),PUT(PATCH)
用来更新资源,DELETE
用来删除资源,这样就统一了数据操作的接口。
PATCH
和PUT
方法的区别?PUT
全部更新资源,举个栗子,user
里面有id
、name
、PUT
更新资源,要求前端提供的一定是一个完整的资源对象,也就是整个user
,如果前端缺少字段,那么缺了的字段会被清空。
PATCH
是局部更新资源,后端仅更新接收到的字段。,比如user
现在只需更新name
字段,那么后端只会更新user
的name
字段,前端传什么字段,后端只更新传过来的字段值。补充一下,
PATCH
与PUT
属性上的一个重要区别还在于:PUT
是幂等的,而PATCH
不是幂等的。
HTTP状态码
在REST
中都有特定的意义:200,201,202,204,400,401,403,500。比如401表示用户身份认证失败,403表示你验证身份通过了,但这个资源你不能操作。
无状态
所谓无状态即所有的资源都可以URI
定位,而且这个定位与其他资源无关,也不会因为其他资源的变化而变化。
Restful
是典型的基于HTTP
的协议,HTTP
连接最显著的特点是客户端发送的每次请求都需要服务器回送响应,在请求结束后,会主动释放连接。从建立连接到关闭连接的过程称为“一次连接”。前面一次请求与后面一次请求没有必然的联系,所以是无状态的。
版本号
将API
的版本号放入URL
。GET:http://www.choudalao.com/v1/article/123。或者将版本号放在HTTP头信息中,我个人觉得版本号能够较好的控制缓存问题,推荐放在HTTP头信息中。
过滤信息
如果记录数量很多,服务器不可能都将它们返回给用户。API
应该提供参数,过滤返回结果。如limit
、page
等。
规范返回的数据
为了保障前后端的数据交互的顺畅,建议规范数据的返回,并采用固定的数据格式封装。
{
"data":{
},
"msg":"uri_not_found",
"code":10001,
"request":"GET/v1/article/230"
}
方便测试
采用Restful
风格的API
可以方便测试,便于apizz
、swagger
等构建文档。