我发现有必要理解为什么包括在URI行为动词违反了URI语法REST协议?当我阅读下面的文章,我感觉到太多的人太吵闹有关动词,他们应该做更多的噪音有关内容类型:

RestWiki:最低方法

在一个完美的世界里,客户端浏览器都会支持GET,POST,PUT和DELETE的要求操作。然而,只有GET和POST的支持,这意味着我们坚持努力确定操作应该是PUT和像视图URL中使用常见的行为动词删除,创建,编辑和删除。

这是如何违反REST架构原则的精神,什么是你通过把类似“删除”到您的网址,而不是使用“删除”遇到路障?

有帮助吗?

解决方案

周边的URI指导的唯一有效原因是为了鼓励REST动词的正确用法。如果请求执行一个动作是与客户的期望为每HTTP标准一致,那么它真的并不重要网址中包含。

命名基于名词网址使其自然创建行为是与GET,PUT,POST和DELETE的预期目的一致。

当你把动词的URL它可以变得非常混乱,因为经常HTTP动词都会有矛盾的行为到一个在URL中。 REST规则说你必须尊重HTTP动词,但通常URL是更具描述性的,因此它可以是误导性的。

这是浏览器只支持HTTP动词的子集,事实是不是真的重要,因为即使你有完全访问所有的HTTP动词,你还需要能够将其他动词模型,如打印,关闭,确认,取消。

您是绝对正确的,人们需要更加注重方式上的内容类型不是URL结构谈论REST实现时。

让您的网址,是指名词是不是一个REST约束,它是关于鼓励人们陷入成功的坑。

其他提示

REST不是一个协议,而风格。因此,你可以自由地做任何事情,以满足您的要求。

HTTP动词如果可能的话优选的,因为它们是HTTP协议,并且作为这样的标准部分。它还允许使用现有标准的Web服务器上的安全性和缓存层,而无需编写任何定制中间件。

REST表明,我们应该接受HTTP,而不是像SOAP添加抽象层,RPC,或CORBA做。添加额外的动词,或者将其添加到URL可以被看作是一个,虽然轻质,抽象。

不过,你righly提到这些都不是一贯支持的浏览器防空火炮,或Flash的一些版本。因此,可能有必要把它们放在URL在现实世界中,如果你是从客户端accesssing。

您应该看看这个精心虽然为在URL进行删除/ PUT时可能会有严重的安全问题。

我建议的动词GET POST PUT和DELETE适合于几乎任何需要。你不应该需要任何新的动词或响应代码,因为这些意图是通用的。添加进一步信息在请求和响应数据。

查看更多信息这SO文章: 理解REST:动词,错误代码和认证

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top