http://www.ruanyifeng.com/blog/2011/09/restful.html
http://www.ruanyifeng.com/blog/2014/05/restful_api.html
Restful Api-接口设计
概述
一种软件架构风格、设计风格,而不是标准,只是提供了一组设计原则和约束条件。它主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。
如可以定义,客户端通过四个HTTP动词(POST、DELETE、PUT、GET),对服务器端资源进行操作,实现”表现层状态转化”(增删改查)。
资源
所谓”资源”,就是网络上的一个实体,或者说是网络上的一个具体信息。它可以是一段文本、一张图片、一首歌曲、一种服务,总之就是一个具体的实在。你可以用一个URI(统一资源标识符)指向它,每种资源对应一个特定的URI。要获取这个资源,访问它的URI就可以,因此URI就成了每一个资源的地址或独一无二的识别符。
URI 是统一资源标识符,而 URL 是统一资源定位符
URI代表资源的名称。URL代表资源的路径地址
通过URL找到资源是对网络位置进行标识
通过URI找到资源是通过对名称进行标识
设计误区
最常见的一种设计错误,就是URI包含动词。因为”资源”表示一种实体,所以应该是名词,URI不应该有动词,动词应该放在HTTP协议中。
举例来说,某个URI是/posts/show/1,其中show是动词,这个URI就设计错了,正确的写法应该是/posts/1,然后用GET方法表示show。
将API的版本号放入URL中
https://api.example.com/v1/
注意
(1)API的身份认证应该使用OAuth 2.0框架。
(2)服务器返回的数据格式,应该尽量使用JSON,避免使用XML。
Rest,soap,rpc区别
HTTP 9种请求方法
Http协议定义了很多与服务器交互的方法,最基本的有4种:
增 POST :向指定资源提交数据进行处理请求
删 DELETE :请求服务器删除URI所表示的资源
改 PUT :从客户端向服务器传送的数据取代指定的文档的内容。
查 GET :请求指定的页面信息,并返回实体主体。
HEAD 类似于get请求,只不过返回的响应中没有具体的内容,只返回响应头,当我们只需要查看某个页面的状态的时候,使用 HEAD 是非常高效的,因为在传输的过程中省去了页面内容。
CONNECT HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
OPTIONS 允许客户端查看服务器的参数。请求地址允许的请求方法
TRACE 回显服务器收到的请求,主要用于测试或诊断。
PATCH 对 PUT 方法的补充,用来对已知资源进行局部更新 。
OPTIONS
curl -X OPTIONS https://example.org -i
HTTP/1.1 204 No Content
Allow: OPTIONS, GET, HEAD, POST
Cache-Control: max-age=604800
Date: Thu, 13 Oct 2016 11:45:00 GMT
Server: EOS (lax004/2813)
post和put的区别:
POST方法不是幂等的,而PUT方法则有幂等性。
幂等:其任意多次执行所产生的影响均与一次执行的影响相同
POST在请求的时候,服务器会每次都创建一个文件,但是在PUT方法的时候只是简单地更新,而不是去重新创建。因此PUT是幂等的。
所以post经常用于创建资源(/articles),put用于具体资源的更改(/articles/123**)**)