如何在Spring Servlet中接受JSON POST参数作为@RequestParam?

mem*_*und 2 java spring json spring-mvc

我正在尝试创建一个POST应该通过JSON请求调用的servlet .以下应该有效,但没有.可能缺少什么?

@RestController
public class MyServlet {
    @PostMapping("/")
    public String test(@RequestParam String name, @RequestParam String[] params) {
        return "name was: " + name;
    }
}
Run Code Online (Sandbox Code Playgroud)

JSON POST:

{
   "name": "test",
   "params": [
      "first", "snd"
   ]
}
Run Code Online (Sandbox Code Playgroud)

结果:name始终为null.为什么?

"Response could not be created: org.springframework.web.bind.MissingServletRequestParameterException: Required String parameter 'name' is not present"

小智 8

一般情况下,我不会在POST方法中传递请求参数.相反,我正在使用DTO将它传递到体内,如:

@RequestMapping(value = "/items", method = RequestMethod.POST)
    public void addItem(@RequestBody ItemDTO itemDTO) 
Run Code Online (Sandbox Code Playgroud)

然后,您需要将ItemDTO创建为具有必要字段的POJO.