为什么在REST实现的URI中包含动作谓词会违反协议?

8 rest restful-url

我发现有必要理解为什么在URI中包含动作谓词违反了URI语法的REST协议?当我阅读下面的文章时,我感觉有太多人对动词产生过多的噪音,并且他们应该对内容类型产生更多的噪音:

RestWiki:最小方法

在完美的世界中,客户端浏览器都支持GET,POST,PUT和DELETE以进行请求操作.但是,只支持GET和POST,这意味着我们一直试图通过在URL中使用常见的动作谓词来识别应该是PUT和DELETE的操作,如视图,创建,编辑和删除.

这是如何违反REST架构原则的精神,以及通过将"删除"之类的内容放入URL而不是使用"删除"而遇到的障碍是什么?

Dar*_*ler 15

围绕URI的指导的唯一有效理由是鼓励正确使用REST动词.如果请求根据HTTP标准执行与客户端期望一致的操作,那么url包含的内容实际上并不重要.

基于名词命名URL使得创建与GET,PUT,POST和DELETE的预期目的一致的行为变得很自然.

当你在URL中放入动词时,它会变得非常混乱,因为http动词通常会与URL中的动词产生矛盾的行为.REST规则说你必须尊重HTTP动词,但通常url更具描述性,因此它可能会产生误导.

浏览器仅支持HTTP谓词子集的事实并不真正相关,因为即使您对所有HTTP谓词都有完全访问权限,您仍然需要能够为其他动词建模,例如打印,关闭,确认,取消.

在谈论REST实现时,人们需要更多地关注内容类型而不是URL结构,这是绝对正确的.

让你的URL引用名词不是一个REST约束,它是关于鼓励人们陷入成功的陷阱.