14

服务器应该允许将 Web 服务归类为 RESTful 的最小 HTTP 动词集是多少?

如果我的主机不允许PUTDELETE怎么办?

这真的很重要吗,我可以通过GETPOST过上幸福的生活吗?


更新:感谢大家的回答,由于与 Bill Venners 和 Elliotte Rusty Harold 采访的链接,Roger 的回答可能是最好的。我现在明白了。


4

5 回答 5

22

是的,你可以不用 PUT 和 DELETE。

这篇文章告诉你为什么: http ://www.artima.com/lejava/articles/why_put_and_delete.html

虽然对于真正的 RESTafrian 人来说,这可能是异端,但在现实世界中,你尽你所能,用你所拥有的。尽可能理性,尽可能符合自己的约定,但你绝对可以在没有 P 和 D 的情况下构建一个好的 RESTful 系统。

rp

于 2008-08-23T04:23:10.713 回答
3

你也可以使用 X-Http-Verb-Override:DELETE inst。HTTP 删除。这对于无法更改 HTTP 动词且仅支持 GET 和 POST 的 Silverlight 客户端也很有用...

于 2008-08-23T08:20:47.070 回答
2

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

于 2008-08-23T04:17:31.663 回答
2

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

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

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

于 2009-07-20T18:43:42.380 回答
1

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

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

于 2008-08-23T06:51:40.870 回答