1、REST 接口web
在请求层面,REST 规范能够简单粗暴抽象成如下两个规则:api
请求 API 的 URL 表示用来定位资源;
请求的 METHOD 表示对这个描述资源进行的操做;数组
知乎大神Ivony有句话说的好:安全
URL定位资源,用HTTP动词(GET,POST,DELETE,DETC)描述操做。服务器
在设计web接口的时候,REST主要是用于定义接口名,接口名通常是用名词写,不用动词,那怎么表达“获取”或者“删除”或者“更新”这样的操做呢——用请求类型来区分。架构
好比,咱们有一个friends接口,对于“朋友”咱们有增删改查四种操做,怎么定义REST接口?异步
增长一个朋友,uri: generalcode.cn/v1/friends 接口类型:POST布局
删除一个朋友,uri: generalcode.cn/va/friends 接口类型:DELETEpost
修改一个朋友,uri: generalcode.cn/va/friends 接口类型:PUTurl
查找朋友,uri: generalcode.cn/va/friends 接口类型:GET
注意:这就是REST接口,用url定位资源,用HTTP描述操做
上面咱们定义的四个接口就是符合REST协议的,请注意,这几个接口都没有动词,只有名词friends,都是经过Http请求的接口类型来判断是什么业务操做。
在不少系统中,几乎只用 GET 和 POST 方法来完成了全部的接口操做;这个行为相似于全用 DIV 来布局。实际上,咱们不仅有GET 和 POST 可用,在 REST 架构中,有如下几个重要的请求方法:GET,POST,PUT,PATCH,DELETE。这几个方法均可以与对数据的 CRUD 操做对应起来。
CRUD 是指在作计算处理时的增长(Create)、读取查询(Retrieve)、更新(Update)和删除(Delete)几个单词的首字母简写。即增删改查
GET /api/users ( 表示读取用户列表)
GET 应当实现为一个安全方法。用于获取数据而不该该产生反作用。
他们都应当被实现为幂等方法,即屡次一样的更新请求应当对服务器产生一样的反作用。
PUT 和 PATCH 有各自不一样的使用场景:
PUT 用于更新资源的所有信息,在请求的 body 中须要传入修改后的所有资源主体;
而 PATCH 用于局部更新,在 body 中只须要传入须要改动的资源字段。
【Delete】,资源的删除,相应的请求 HTTP 方法就是 DELETE。这个也应当被实现为一个幂等的方法。
3、状态码
服务器向用户返回的状态码和提示信息,常见的有如下一些(方括号中是该状态码对应的HTTP动词)。
针对不一样操做,服务器向用户返回的结果应该符合如下规范。