如何解决消息=请求方法'POST'不支持“application / json”

时间:2017-05-15 17:19:04

标签: java json spring spring-boot

我正在构建一个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开发人员工具的屏幕截图,其中显示了响应和请求标头

enter image description here

params看起来像这样: Params

1 个答案:

答案 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";

    }

仅供参考,我花了几个小时来修理。希望答案有所帮助。