您的位置:首页 > 其它

RESTful 接口规范

2017-08-20 11:17 218 查看

1.什么是Rest

rest的全称是:Representational State Transfer, 中文意思是表述状态转移

符合架构原理的前提下,理解和评估以网络为基础的应用软件的架构设计,得到一个功能性强,性能好,适宜通信的架构。REST指的是一组架构约束条件和原则

REST架构风格受web技术的影响很深 ,但是REST并不与HTTP绑定。

2.理解RESTful

要RESTful 架构,需要理解Representational State Transfer 这个词组的意思,它的每个词都什么意思

资源与URI

统一资源接口

资源的表述

资源的链接

状态的转移

2.1资源与URI

REST全称是表述性状态转移,那究竟指的是什么的表述?其实指的就是资源,资源可以代表任何东西:实体(手机号),抽象概念(价值)

URI:资源被识别的标识。

- 用来分隔单词,例如 http://www.oschina.net/news/38119/oschina-translate-reward-plan。 
/ 用来表示资源的层级关系

? 用来过滤资源

, ; 用来表示同级资源的关系


2.2统一资源接口

GET POST PUT DELETE

状态码

例如200 在各个接口中的含义:

GET:已在响应中发出

POST: 如果现有资源已被更改

PUT:如果已存在资源被更改

DELETE:资源已被删除

POST和PUT在资源的区别在于:所创建的资源的URI是否由客户端决定

客户端不一定都支持这些HTTP方法,例如比较古老的基于浏览器的客户端只支持GET和POST两种方法。

统一接口是否意味着不能拓展带特殊语义的方法?

统一接口并不阻止你拓展方法,只要方法对资源的操作有着具体的,可以识别的语义即可,并能保持接口的统一性。

github的API提供了PATCH方法来进行ISSUE的更新。

PATCH /repos/:owner/:repo/issue/:number


2.3资源的表述

通过上面的HTTP方法就可以获取资源了 是不? 不, 准确的说,客户端获取的只是资源的表述而已,资源在外界的展现形式,可以有多种,在客户端和服务器端资源的传送,也只是资源的表述而不是资源的本身。例如文本资源可以用 html, xml, json等格式,图片可以使用JPG,PNG等展示出来。

资源的表述包括和描述数据的元数据,例如,HTTP头’Content-Type’就是这样的元数据。

例如:一个抓包请求。

2.4 资源的链接

我们知道REST是使用标准的HTTP方法来操作资源的,但仅仅因此就理解成带CRUD的Web数据库架构就太过简单了。

超媒体:把一个个资源链起来。

2.5 状态转移

REST的无状态通信原则,(服务器不应该保存客户端的状态)

2.5.1 应用状态与资源状态

实际上,状态应该分为应用状态和资源状态,客户端负责维护应用状态,而服务端维护资源状态

客户端和服务器的交互必须是无状态的,并且每次请求中包含处理该请求所需的一切信息。

服务端不需要在请求间保留应用状态,只有在接受实际请求的时候,服务端才会关注应用状态。

这种无状态通信原则,使得服务端和中介能够理解独立的请求和响应。

2.5.2 应用状态的转移

状态转移到这里已经很好理解了,“会话”状态不是作为资源状态保存在服务端的,而是被客户端作为应用状态进行跟踪的。客户端应用状态在服务端提供的超媒体的指引下发生变迁。服务端通过超媒体告诉客户端当前状态有哪些后续状态可以进入。

这类“下一页”之类的链接就是这种推进状态的作用–指引你如何从当前状态进入下一可能的状态。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: