问题

服务器应该允许将Web服务归类为RESTful的最小HTTP谓词集是什么?

如果我的主机不允许 PUT 删除 ,该怎么办?

这是否真的很重要,只要 GET POST ,我能过上幸福的生活吗?


更新:感谢您的回答, Roger的答案可能是最好的,因为与Bill Venners和Elliotte Rusty Harold的访谈有关。我现在明白了。


解决方案

是的,你可以在没有PUT和DELETE的情况下生活。

本文告诉您原因: http://www.artima.com/lejava/articles/why_put_and_delete.html

对真正的RESTafrians而言,这可能是异端邪说,在现实世界中,你可以用自己拥有的东西做你所能做的事。尽可能合理并尽可能符合自己的约定,但是你绝对可以构建一个没有P和D的良好RESTful系统。

RP

其他提示

你也可以使用X-Http-Verb-Override:DELETE inst。 HTTP DELETE。这对于无法更改HTTP谓词且仅支持GET和POST ...

的Silverlight客户端也很有用

如果您只是使用GET和POST,它仍然是RESTful。您的网络服务可能只会做只需要GET或POST的事情,所以没关系。

如果协议的实现被破坏,REST允许破坏协议约定(因此,您所做的唯一非标准事情是绕过实现的破坏部分)。因此,在REST中允许使用其他方法来表示一般不受支持的动词,如DELETE或PUT。

编辑:这是Fielding的一句话,他是创建和定义REST的人:

  

REST API不应包含对通信协议的任何更改,除了填写或修复标准协议的未指定位的详细信息,例如HTTP&#8217的PATCH方法或链接头字段。破解实现的解决方法(例如那些足以让人相信HTML定义HTTP’方法集的浏览器)应该单独定义,或者至少在附录中定义,期望解决方法最终会过时。 [这里的失败意味着资源接口是特定于对象的,而不是通用的。]

今天的网络浏览器只处理GETS + POSTS。例如,在Rails中,PUTS + DELETES被“伪造”。通过隐藏的表格字段。

除非您的框架有一些解决方法来“支持” PUTS + DELETES,现在不要担心它们。

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