0

我使用 SpringBoot 1.2.6 创建了一个 SpringREST API。以下是我的发布方法,它有效。但是当我创建一个 Put 方法时,它不起作用。它没有获取参数中的数据。

@CrossOrigin
    @RequestMapping(
            method = RequestMethod.POST,
            consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE,
            produces = MediaType.APPLICATION_JSON_VALUE)
    public String createArticle(String article_name, String article_content, Long image_id, String category,
                                HttpServletRequest req, Authentication authentication) throws Exception {...}

PUT METHOD // 编辑文章

@RequestMapping(value = "/{article_id}",
        method = RequestMethod.PUT,
        consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE,
        produces = MediaType.APPLICATION_JSON_VALUE)
public String editArticle(@PathVariable("article_id") Long article_id,
                          String article_name, String article_content, String category, HttpServletRequest req) throws Exception {...}

我已经设置了调试器,下面是调试快照 Debug Image

4

1 回答 1

0

通过使用PUT方法,它在spring boot中不支持。我是否需要添加任何新配置。

Put 方法仅适用于没有任何参数的请求。如果我添加任何查询参数或表单数据,它就不起作用。

您将实现如下代码。

@RequestMapping(value = "/", method = RequestMethod.PUT)

public @ResponseBody String createArticle(@RequestBody CreateArticle request) {
    LOG.info(request.toString());
    return "ok";
}

其中CreateArticle是请求类,它以 json 格式传递值,并包括所有参数,如 String article_name、 String article_content、 Long image_id、 String categoryHttpServletRequest req、 Authentication authentication

于 2017-07-12T11:23:55.400 回答