我正在构建一个Spring Boot应用程序,允许用户将文档保存到他们通过Tinymce创建和编辑的服务器上。
但是当我点击保存按钮时,我收到有关POST的错误:
Resolving exception from handler [null]: org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'POST' not supported
...
Request method 'POST' not supported
status=405, error=Method Not Allowed, exception=org.springframework.web.HttpRequestMethodNotSupportedException, message=Request method 'POST' not supported, path=/docs}] as "application/json" using [org.springframework.http.converter.json.MappingJackson2HttpMessageConverter
来自我的Controller for Docs
@ResponseBody
@RequestMapping(value = "/{name}", method = RequestMethod.POST, produces="text/html", consumes={"application/json","application/xml"} )
public String addTodos(@PathVariable("name") String name) {
docsService.addDocs(name);
return "200 OK";
}
@ResponseBody
@RequestMapping(value = "/{name}", method = RequestMethod.PUT, produces="text/html", consumes = {"application/json","application/xml"})
public String updateComplated(@PathVariable("name") String name) {
docsService.updateComplated(name);
return "200 OK";
}
我对此错误的理解是,我明确指出了如何处理POST方法,但它说它不存在。
有人可以指导我如何解决这个问题吗?
以下是Firefox开发人员工具的屏幕截图,其中显示了响应和请求标头
答案 0 :(得分:0)
好吧,没想到会弄清楚这一点,但现在就是。
首先,我为HTTP POST设置了一个“固定”URI。我刚拿出RequestMapping的值部分。
其次,当我拿出RequestMapping的值部分时,我也拿出了@PathVariable。相反,如您所见,我将@RequestBody指向String name,然后指定目标实体。
执行此操作后,我收到415错误而不是405.这意味着POST方法已被识别,但mediatype不正确。尽管您可以在其他帖子中阅读,但您可以保留@RequetBody并指定application/x-www-form-urlencoded; charset=UTF-8
作为要使用的内容类型。
@ResponseBody
@RequestMapping(method = RequestMethod.POST, produces = "text/html", consumes = {"application/x-www-form-urlencoded; charset=UTF-8"})
public String handle(@RequestBody String name, Docs docs) {
docsService.addDocs(name);
return "200 OK";
}
仅供参考,我花了几个小时来修理。希望答案有所帮助。