今天的浏览器(或 HTML < 5)只支持 HTTP GET 和 POST,但要与 RESTful 通信,也需要 PUT 和 DELETE。如果解决方法不应该是使用 Ajax,则需要隐藏表单字段之类的东西来覆盖实际的 HTTP 方法。
Rails 使用以下技巧:
<input name="_method" type="hidden" value="put" />
有没有可能用 JAX-RS 做类似的事情?
今天的浏览器(或 HTML < 5)只支持 HTTP GET 和 POST,但要与 RESTful 通信,也需要 PUT 和 DELETE。如果解决方法不应该是使用 Ajax,则需要隐藏表单字段之类的东西来覆盖实际的 HTTP 方法。
Rails 使用以下技巧:
<input name="_method" type="hidden" value="put" />
有没有可能用 JAX-RS 做类似的事情?
严格来说不是 JAX-RS 解决方案,但 spring 3.0 附带了一个HiddenHttpMethodFilter
完全实现 rails 所做的技巧的方法,默认为相同的_method
参数。
请注意,您不需要使用所有 spring 来使用此过滤器,您可以在您的配置中配置它web.xml
并忽略 spring 的其余部分。
泽西岛也有类似的东西,虽然过滤了一个标题字段。文档可以在这里找到
引用罗伊菲尔丁的话:
无论如何,有很多 RESTful 服务除了 GET 和 POST 什么都不做。关键是如何使用这些方法,而不是使用什么方法。举一个具体的例子,是什么让 wiki 或多或少 RESTful 几乎总是取决于它如何(ab)使用 GET 和会话——相比之下,它是否使用 PUT 或 POST 来编辑页面是糖顶。
重点是我的,取自这篇文章 http://tech.groups.yahoo.com/group/rest-discuss/message/10746