我正在请求体内使用POST方法向控制器发送一个JSON对象(使用post man)。
我想接收JSON参数作为我的控制器功能的变量
当我发送此内容时
{"A":"some a value", "B":"Some b value"}
我希望在我的控制器中像这样得到它们
@RestController
public class UserController {
@RequestMapping(value="/api/some-update-url" , method=RequestMethod.POST)
Boolean updateSomeData(@RequestParam String A, @RequestParam String B) {
.....
}
}
但这是我邮递员的结果
{
"timestamp": 1490896822946,
"status": 400,
"error": "Bad Request",
"exception": "org.springframework.web.bind.MissingServletRequestParameterException",
"message": "Required Gender parameter 'gender' is not present",
"path": "/api/some-update-url"
}
你可以帮我吗
谢谢!!
答案 0 :(得分:1)
@RequestParam带注释的参数链接到特定的Servlet请求参数。参数值将转换为声明的方法参数类型。此批注指示应将方法参数绑定到Web请求参数。
例如,如果我将电子邮件作为请求参数传递,我会在控制器中注释该方法:
@RequestParam(value = "email", required = true) String email
调用这样的方法就像:
http://some.service.url/verification?email=someone@somewhere.com
答案 1 :(得分:0)
@RequestParam用于映射POST / GET请求参数。你正在做的是发送JSON作为请求的主体。在这种情况下,您需要在Controller的一个方法参数上使用@RequestBody参数。
@RequestMapping(value="/api/some-update-url", method=RequestMethod.PUT)
Boolean updateSomeData(@RequestBody MyClass myClass) {
.....
}
您可以在此处进一步了解@RequestBody: https://www.javacodegeeks.com/2013/07/spring-mvc-requestbody-and-responsebody-demystified.html