在弹簧控制器中获取Form-data

时间:2017-06-17 04:13:53

标签: spring-boot

嗨它可能看起来像重复但不是。

我正在使用spring boot构建一个rest api,需要在POST请求中获取客户端app发送的form-data。 为了测试目的我正在使用邮递员。到目前为止,我已尝试过以下

@PostMapping("/feed/comment/add/{feedId}")
    public ResponseEntity<BaseResponse> addComment(@RequestHeader(name = Constants.USER_ID_HEADER) int userId, 
            @PathVariable("feedId") int feedId,
            @RequestParam("comment") String comment
            ) {
        LOGGER.info("Received add comment request with comment:"+comment);

        return new ResponseEntity<BaseResponse>(new BaseResponse("You are not feed owner", RESPONSETYPE.ERROR), HttpStatus.UNAUTHORIZED);
    }

这会产生错误“必需字符串参数'注释'不存在”

尝试第二种方式:

@PostMapping("/feed/comment/add/{feedId}")
public ResponseEntity<BaseResponse> addComment(@RequestHeader(name = Constants.USER_ID_HEADER) int userId, 
        @PathVariable("feedId") int feedId,
        @RequestParam Map<String, String> values
        ) {
    for(String key: values.keySet()) {
        System.out.println(key+":"+values.get(key));            
    }

    return new ResponseEntity<BaseResponse>(new BaseResponse("You are not feed owner", RESPONSETYPE.ERROR), HttpStatus.UNAUTHORIZED);
}

这给出了有线输出:

------WebKitFormBoundarymk97RU1BbJyR0m3F
Content-Disposition: form-data; name:"comment"

test comment
------WebKitFormBoundarymk97RU1BbJyR0m3F--

我很确定使用平面servlet我可以使用request.getParameter(“comment”)访问它 我不确定如何在弹簧控制器的情况下取出它。

1 个答案:

答案 0 :(得分:0)

&#34;必需的字符串参数&#39;评论&#39;不存在&#34;当需要这个参数但你没有发送它时会发生这个错误。

@RequestParam(value =&#34; comment&#34;,required = false) 这将使comment参数可选。所以,如果你错过发送评论参数,那就好了。