我正在尝试打电话POST。我的身体只有一个参数,所以我想简单地使用@RequestParam.代码: @RequestMapping(value = "/call", method = RequestMethod.POST) @ResponseBody public void doStuff(@RequestParam List<Integer> nums, HttpServletResponse response) {通话x-www-form-urlencoded效果很好-卷曲 -X POST https://localhost:9002/call-H '授权:承载 d1436121-25f7-4162-b0d4-7699d4acf147'-H '内容类型:application/x-www-form-urlencoded'-H '主机:localhost:9002'-d nums=0%2C1% 2C3但使用 JSON 进行同样的调用会失败。代码: @RequestMapping(value = "/call", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE) @ResponseBody public void doStuff(@RequestParam List<Integer> nums, HttpServletResponse response) {呼叫application/json失败-curl -X POST https://localhost:9002/call-H '授权:承载 d1436121-25f7-4162-b0d4-699d4acf147'-H '内容类型:application/json'-H '主机:localhost:9002'- d '{ "nums":[0,1,3] }'错误:{ "errors": [ { "message": "抱歉,发生错误。", "type": "MissingServletRequestParameterError" } ] }为什么它接受x-www-form-urlencoded却又拒绝JSON。
3 回答
青春有我
TA贡献1784条经验 获得超8个赞
@RequestParam
您只能与 URL 查询参数、表单数据或多部分负载一起使用。如果您想使用 JSON 有效负载,则应使用@RequestBody
注释并将该 JSON 映射到 Java 对象。
在 Spring MVC 中,“请求参数”映射到查询参数、表单数据和多部分请求中的部分。这是因为 Servlet API 将查询参数和表单数据组合到一个称为“参数”的映射中,其中包括请求正文的自动解析。
添加回答
举报
0/150
提交
取消