我希望坚持API最佳做法,因此希望使用相同的URL来获取和更新资源。我的GET实现就像:
@RequestMapping(value = "/userconfig/{userName}",
method = (RequestMethod.GET))
@ResponseBody
public String userPreferenceService(@PathVariable String userName) {
这很好用。 当我尝试实现更新方法时:
@RequestMapping(value = "/userconfig/{userName}",
method = RequestMethod.PUT)
public String userPreferenceUpdateService(@PathVariable String userName,
@RequestBody UserPreference userPreference) {
我在这两种方法上得到了404。我记得几年前当我使用Spring进行网络服务实现时遇到类似的问题,但忘记了我当时做错了什么。 任何指针都会很棒。
答案 0 :(得分:1)
正如M. Deinum所说;这与Spring MVC有关。我曾经遇到过这样的需求,而我所做的是来自.jsp文件,我添加了一个隐藏字段来更改方法名称,如下所示:
<form id="deleteForm" action="your/url/" method="post">
<input type="hidden" name="_method" value="PUT" />
</form>
这就解决了我的问题。有关这方面的更多信息,请参阅 Willin Wheeler 中的 Spring in Practice Joshua White 我读了这本书,他们使用了这种解决方案很多。