RESTful 接口规范

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 应用状态的转移
状态转移到这里已经很好理解了,“会话”状态不是作为资源状态保存在服务端的,而是被客户端作为应用状态进行跟踪的。客户端应用状态在服务端提供的超媒体的指引下发生变迁。服务端通过超媒体告诉客户端当前状态有哪些后续状态可以进入。
这类“下一页”之类的链接就是这种推进状态的作用–指引你如何从当前状态进入下一可能的状态。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值