REST客户端可以不RESTful吗?

时间:2016-05-11 00:46:48

标签: rest

REST由统一接口原理定义。通过操纵它们的表示来访问和修改资源。统一界面还暗示超媒体作为应用程序状态引擎(HATEOAS),由维基百科解释:

  

客户端仅通过服务器在超媒体内动态识别的动作(例如,通过超文本内的超链接)进行状态转换。除了应用程序的简单固定入口点之外,客户端不会假定任何特定操作可用于除先前从服务器接收的表示中描述的任何特定资源。

本质上,REST客户端从服务器链接接收它可用于创建,修改或删除资源的资源,类似于人们在网页上选择链接的方式。

我经常在教程或文档中看到如何使用jQuery访问REST API的示例,如下所示:

jQuery.getJSON("/cities/mumbai/events/?month=2009-05", function(json) {
    alert(json[0]);
});

在这种情况下,客户端不使用HATEOAS或REST的其他连接方面。这是否意味着我们可以说这个客户端不是RESTful?

3 个答案:

答案 0 :(得分:1)

你的问题很好。因为许多开发人员都在努力解决同样的问题,Leonard Richardson开发了一个"REST Maturity Model"来定义四个级别:

  • 级别0 - HTTP作为传输系统
  • 1级 - 资源
  • 第2级 - HTTP动词
  • 3级 - 超媒体控制

我说要成为RESTful,系统必须至少具有级别2.使用HATEOS的级别3通常很难实现,即使它在严格意义上是RESTful。

不接受1级甚至0级,使用2级,如果可能,使用3级。

答案 1 :(得分:0)

@leo你不应该在评论中“基本上”和“严格地”使用形容词。赫克是绝对正确的。示例代码绝对不是RESTful。例如,如果服务器更改URL,则客户端将中断。除此之外,RESTful客户端不会对站点主页以外的URL进行硬编码。

答案 2 :(得分:-2)

很安静。 REST Client提供了一种与HTTP RESTful资源交互的简单方法。 REST-Client - 用于与RESTful http / https资源交互的简单客户端 使用REST :: Client;

echo $poll;