我正在开发一个 Spring REST / Backbone 应用程序。
虽然 GET 效果很好,但我在使用 PUT 时遇到了问题(可能与 DELETE 相同)。
我的 Spring 控制器有以下方法:
@RequestMapping(value="/{id}", method = RequestMethod.PUT)
public void putItem( @PathVariable("id") String id, @RequestBody Item item) {...}
但是当我尝试保存 Backbone 模型时,出现以下错误:
405 (HTTP method PUT is not supported by this URL)
GET 映射在同一个控制器类中并使用相同的 url 注释(类级别)。
我的注释正确吗?我正在使用 Jetty 作为服务器,我是否需要以某种方式对其进行配置以允许 PUT 请求?
编辑:
假设这是一个 Jetty 配置问题,我将以下内容添加到 webdefault.xml
<web-resource-collection>
<url-pattern>*.do</url-pattern>
<http-method>GET</http-method>
<http-method>HEAD</http-method>
<http-method>PUT</http-method>
<http-method>POST</http-method>
</web-resource-collection>
在<security-constraint>
定义里面。它的效果是现在 GET 方法返回 403 (Forbidden) - 所以就好像这个定义确实只是限制安全性而不是使它更自由的手段。我还尝试删除 GET 和 PUT 行,但它对我的原始 405 错误没有影响(当然它确实使 GET 再次工作)