成熟的Richardson模型

LenonardRichardson 是非常有名的四个层次定义,层次从0到3.这样设计就是Web API的“RESTfulness”的层次。每一级都会有额外工作和时间的API,但它确是提供有效的方式。

1. Level 0 – HTTP

第零级是很容易到达的,当你在通过HTTP协议去访问网络时,你要确保你的请求资源是有效的。你可以应用任何的数据代理去找到你例子中适合的信息,如xml、JSON等。

2. Level 1 – HTTP

大多数人听到REST的时候,就会认为是一种资源。这种资源在我们的模型当中是唯一性的,例如,一个用户或一个tweet信息。运用HTTP,这个资源是跟唯一的URI地址是的关系的。例如下面的例子:

1)        /users 包含所有用户的列表

2)        /user/42 包含特殊的用户

3)        /user/42/tweets 包含所有的tweets是跟指定的用户是有关系的。

可能我们的API需要访问特殊的tweet用户,使用/user/42/tweet/3或可能每个tweet都是唯一的。在这个例子中,可能你更喜欢/tweet/3.

Level1就是去解决更为复杂的应用程序通过这个多个特殊的资源。

当服务器返回时,关于响应是没有更多的规则。当你应用/users的资源列表时,你可能想要获取包含特殊资源,或者在请求时可以给出更多详细的资源。在你获取请求之前,API经常会返回一些你感兴趣的信息。

它可以真正的让你达到去定义 自己API的目标,给你的用户展示他们希望的API模型。

3. Level 2 – HTTP verbs

这个级别是关于运用HTTP的语言去定义有效的资源作用。这个是一个非常有用的方式去描述你的API的作用,尤其是通过HTTP的语言让所有开发人知道你API的标准。下面是主要的词语:

1)        GET:这个是用特殊的URI地址来读取数据

2)        HEAD:这个是跟GET的作用是相同的,但是却没有消息体。这个对于无数据的获取是非常有用的(像缓存信息等)。

3)        DELETE:这个是删除资源

4)        PUT:这个是更新和创建意资源

5)        POST:这个是创建和更新资源

6)        PATCH:主要用于更新资源

7)        OPTIONS:返回列表的方法用于服务提供特殊的资源

大多数的应用的操作都是增删改查(CRUD),而仅仅涉及到的词语是:GET、DELETE和POST。更多的词语是从你的丰富和动态的API中继承的。它可以帮助第三方与你的服务有关系,通过允许它们输入一些命令和看发生了什么。

OPTIONS和HEAD的词语可以看到无数所或系统在危险状态下的工作情况。

在上面,我们已经说了,PUT和POST显示出相同的作用。不同的是,PUT是一种等幂的,意思是在不同时间点发送同一个请求,但是返回的却是同一个服务器状态。PUT操作需要通过URI地址,而且请求时是有多足够的信息。

例如,客户端运用PUT的数据在/user/42,和返回的结果将会是更新的创造,这个取决于存在实体的优先级。

另外一方面,当你不明确你的URI地址时,你需要运用POST。你可以用POST到/users,但却没有特殊的ID在你自己的请求中,结果user也会被创建。你也可以用POST去请求相同的/users资源,这个时候user的ID号将会包含在你请求的实体中,和服务也会去更新user.

就像你所看到的,POST和PUT的作用,其实PUT的请求地址中会包含请求时所用的参数。而POST中是没有的。

服务器可能允许资源被修改,这个时候就会用PATCH。

在这个级别中,我还是鼓励你用有意思的HTTP的编码号当你发出响应时。

4. Level 3 – Hypermedia controls

超媒体控制也被称为超文本的应用程序引擎状态(HATEOAS).这个缩写是是RESTful服务的重要的部分:它可以通过超文本来显示出来。从本质上来说,服务器端会告诉客户端通过响应头和响应体作出怎样的选择。

此外,当我们创建资源用PUT时,服务器需要返回201CREATED的编码消息和发送Location消息头,其中包括URI的创建资源。

连接到API的部分是我们所要看到的,但是这样的定义是没有标准。Spring Data REST ,一个Sping 工程允许我们去创建RESTful的结构,典型的输出如下:


去访问/users的格式如下:


This gives you a good idea of what you can do with the API, doesn't it?


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值