弹簧,在控制器功能中获取json键

时间:2017-03-30 18:31:45

标签: json spring post controller spring-data

我正在请求体内使用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"
}
你可以帮我吗

谢谢!!

2 个答案:

答案 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