美文网首页
REST原理

REST原理

作者: wencai | 来源:发表于2018-01-10 10:58 被阅读0次

参考:http://www.ruanyifeng.com/blog/2011/09/restful.html

一、REST名称

  Representational State Transfer:表现层状态转化。
  如果一个架构符合REST原则,就称它为RESTful架构。要理解RESTful架构,最好的方法就是去理解Representational State Transfer。

二、理解REST

1.资源(Resource)

为什么要说资源:
  “表现层状态转化”其实指的是“资源”的”表现层“。
资源是什么:
  就是网络上的一个实体。它可以是一段文本,一张图片,一种服务。可以用一个URI指向它,每种资源对应要给特定的URI。

2.表现层(Representational)

  资源是一种信息实体,它可以有多种外在表现形式。我们把资源呈现出来的形式,叫做它的“表现层”。
  比如,文本可以用txt格式表现,也可用HTML格式、XML格式、JSON格式表现。URI只代表资源的实体,不代表它的形式。

3.状态转化(state transfer)

  访问一个网站,就代表了客户端和服务端的一个互动过程。势必涉及到数据和状态的变化。
互联网通信协议HTTP协议,是一个无状态协议。意味着所有的状态都保存在服务器端。因此,如果客户端想要操作服务器端,必须通过某种手段,让服务器发生“状态变化”。而这种变化是建立在表现层之上的,所以就是“表现层状态转化”。

三、综述

综上,得出RESTful架构
1)每一个URI代表一种资源;
2)客户端与服务器之间,传递这种资源的某种表现层;
3)客户端通过HTTP动词(GET、POST、PUT、DELETE等)对服务器端资源进行操作,实现“表现层状态转化”。

四、常见误区

1)URI包含动词。因为资源是一种实体,所以应该是名词,动词应该放在HTTP协议中。
举例1:posts/show/1因show是动词,正确写法应该是posts/1,然后用GET方法表示show
举例2:如果某些动作是HTTP动词表示不了的,就应该把动作做成一种资源。如网上汇款,从账户1向账户2汇款500元,错误的URI:POST /accounts/1/transfer/500/to/2,正确写法是把动词transfer改成名词transaction,资源不能是动词,但可以是一种服务:

POST   /transaction HTTP/1.1
HOST:  127.0.0.1
from=1&to=2&amount=500.00

2)URI中加入版本号:

http://www.example.com/app/1.0/foo
http://www.example.com/app/2.0/foo

  因不同版本可理解为同一个资源的不同表现形式,所以采用同一个URI。版本号可以在HTTP请求头信息的Accept字段中进行区分,也可以放在URL中。

Accept: vnd.example-com.foo+json; version=1.0
Accept: vnd.example-com.foo+json; version=2.0

相关文章

网友评论

      本文标题:REST原理

      本文链接:https://www.haomeiwen.com/subject/wzannxtx.html