2017-06-01 28 views
-2

TutorialsPoint定义了以下方法REST风格的设计背景:URI包含HTTP动作动词。我可以考虑这个API 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 

我觉得这是一种误导,因为它不是REST风格。

一个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正确的理解?无论REST风格的定义


,在我看来,TutorialsPoint提出错误的设计,因为deleteUser内部URL复制一个已经为DELETE HTTP行动,这违反了Once And Only Once普遍原则传递的信息。

回答

2

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

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


但是REST架构变为大有超越的URI的设计。

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

RESTful应用程序中的基本概念是资源。资源可以有不同的表示。欲了解更多详情,这answer可以是有帮助的。

要被认为是REST风格,应用程序必须遵循一套在罗伊·托马斯Fielding的论文的chapter 5定义的约束:

+0

你是什么意思 “本身的网址是不是REST风格”?我认为围绕资源进行RESTful设计意味着URL将包含资源地址而不是操作地址。至少他们不应该重复已经作为HTTP请求类型传递的内容。 – alpav

+0

@alpav _RESTful_概念并不依赖于URL的设计方式。在通过HTTP协议设计REST时,URL必须是面向资源的,但也有一些必须遵守的约束条件。 –

+0

是的,面向资源的URL并不是RESTful设计要求的唯一含义,但这是否意味着什么?可以在任何RESTful设计中的URL内部采取行动?我认为它不能。 – alpav

2

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

相关问题