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}的通用原则}。
答案 0 :(得分:2)
是的,你的理解是正确的。该教程具有误导性。
答案 1 :(得分:2)
第一组端点是REST API的糟糕设计。这完全是关于RPC(并且DELETE
请求不应该有有效负载)。
第二组端点是面向资源的,这就是你想要的REST API。 URI标识资源,HTTP方法表示对资源的操作。
然而,REST架构远远超出了URI设计。
REST架构风格与协议无关,但它大部分时间都是基于HTTP协议设计的。
RESTful应用程序中的基本概念是资源。资源可以有不同的表示形式。有关详细信息,此answer可能会有所帮助。
要被视为RESTful,应用程序必须遵循Roy Thomas Fielding的论文chapter 5中定义的一组约束: