URI包含HTTP动作谓词。我可以将此API视为RESTful吗?

时间:2017-06-01 21:08:57

标签: rest url

TutorialsPoint在RESTful设计的上下文中定义了以下方法:

URI           HTTP      Body           Result
-----------------------------------------------------------------
listUsers     GET       empty          Show list of all the users
addUser       POST      JSON string    Add details of new user
deleteUser    DELETE    JSON string    Delete an existing user
:id           GET       empty          Show details of a user

我认为这是误导性的,因为它不是RESTful。

RESTful设计如下:

URI          HTTP      Body           Result
----------------------------------------------------------------
users        GET       empty          Show list of all the users
users        POST      JSON string    Add details of new user
users        DELETE    empty          Delete an existing user
users/:id    GET       empty          Show details of a user

我对RESTful的理解是否正确?

无论RESTful的定义如何,在我看来,TutorialsPoint提出了错误的设计,因为URL内的deleteUser会复制已作为DELETE HTTP动作传递的信息,这违反了{{3}的通用原则}。

2 个答案:

答案 0 :(得分:2)

是的,你的理解是正确的。该教程具有误导性。

答案 1 :(得分:2)

第一组端点是REST API的糟糕设计。这完全是关于RPC(并且DELETE请求不应该有有效负载)。

第二组端点是面向资源的,这就是你想要的REST API。 URI标识资源,HTTP方法表示对资源的操作。

然而,REST架构远远超出了URI设计。

REST架构风格与协议无关,但它大部分时间都是基于HTTP协议设计的。

RESTful应用程序中的基本概念是资源。资源可以有不同的表示形式。有关详细信息,此answer可能会有所帮助。

要被视为RESTful,应用程序必须遵循Roy Thomas Fielding的论文chapter 5中定义的一组约束: