RESTful Web服务和HTTP动词

时间:2008-08-23 04:14:17

标签: web-services rest

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

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

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


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


5 个答案:

答案 0 :(得分:22)

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

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

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

RP

答案 1 :(得分:3)

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

的Silverlight客户端也很有用

答案 2 :(得分:2)

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

答案 3 :(得分:2)

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

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

  

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

答案 4 :(得分:1)

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

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