restful接口规范
-
RESTful(Representational State Transfer)表述性状态转移
restful原则可以由以下这些概念进行解释。
- 资源与URI
- 统一资源接口
- 资源的表述
- 资源的链接
- 状态的转移
资源与URI
表述性状态转移,表述的是什么?其实就是资源。
资源:任何事物,只要有被引用到的必要,它就是一个资源。比如手机号,是实体。也可以是个抽象的概念,比如 手机号的价值。
uri:uri就是资源的唯一标识。也可以看成资源地址。
URI的设计应该遵循可寻址性原则,具有自描述性,需要在形式上给人以直觉上的关联
URI设计上的一些技巧:
1、使用_或-来让URI可读性更好
http://www.oschina.net/news/38119/oschina-translate-reward-plan。
2、使用/来表示资源的层级关系
/git/git/commit/e3af72cdafab5993d18fae056f87e1d675913d08 // git用户的git项目的某次提交记录
3、使用?用来过滤资源
/pulls?state=closed // 用来表示git项目中已经关闭的推入请求
4、,或;可以用来表示同级资源的关系
/git/git /block-sha1/sha1.h/compare/e3af72cdafab5993d18fae056f87e1d675913d08;bd63e61bdf38e872d5215c07b264dcc16e4febca // github可以比较某个文件在随意两次提交记录之间的差异
统一资源接口
统一接口包含了一组受限的预定义的操作,不论什么样的资源,都是通过使用相同的接口进行资源的访问
get: 获取表示
post: 创建资源
put: 更新资源
delete: 删除资源
资源的表述
客户端获取的只是资源的表述而已。资源在外界的具体呈现,可以有多种表述:html、xml、json
HTTP头"Content-Type" 就可以来表述资源
Content-Type: application/json; cahrset=utf-8;
资源的链接
在表述格式里边加入链接来引导客户端。
下面展示的是github获取某个组织下的项目列表的请求,可以看到在响应头里边增加Link头告诉客户端怎么访问下一页和最后一页的记录。 而在响应体里边,用url来链接项目所有者和项目地址。
状态的转移
REST原则中的无状态通信原则。
这里说的无状态通信原则,并不是说客户端应用不能有状态,而是指服务端不应该保存客户端状态。
客户端负责维护应用状态,而服务端维护资源状态。
服务端通过超媒体告诉客户端当前状态有哪些后续状态可以进入。
这些类似"下一页"之类的链接起的就是这种推进状态的作用——指引你如何从当前状态进入下一个可能的状态。
-