Spring MVC无法接收JSON参数

时间:2019-02-20 08:05:18

标签: json spring spring-mvc

java代码:

@RequestMapping("/addQuestion")
@ResponseBody
public Result addQuestion(@RequestParam("title") String title,
        @RequestParam("content") String content){
    Question question = new Question();

我使用邮递员发送请求参数 邮递员:

Reqeust Header:
Content-Type:application/json

Request Body:
{
"userId" : 1,
"offset": 0,
"limit":10
}

返回结果:

http代码:400

"timestamp": "2019-02-20T06:39:41.223+0000",
"status": 400,
"error": "Bad Request",
"message": "Required int parameter 'userId' is not present",

我不知道问题是否出在邮递员上,我认为java代码应该可以.....

帮我...谢谢...伙计

2 个答案:

答案 0 :(得分:1)

在这种情况下,您应该使用@RequestBody而不是@RequestParam

@PostMapping("/addQuestion")
@ResponseBody
public Result addQuestion(@RequestBody Question)

@RequestParam用于处理查询参数,但是您要处理请求的正文,这就是@RequestBody的作用。

答案 1 :(得分:0)

在spring框架中,我们列出了三个注释,这些注释使我们可以通过请求发送一些数据:

1) public void createUser(@RequsetBody User user) {
          ...
   }

在请求中,您应该添加请求正文:这实际上是您在请求正文中添加的内容:

Reqeust Header:
Content-Type:application/json

Request Body:
{
"userId" : 1,
"offset": 0,
"limit":10
}

但是您的控制器正在等待@RequestParam

2) public void addUserName(@RequsetParam String userName) {
          ...
   }

在请求中,您应该添加如下查询参数:

Http Params

userId : 1,
offset: 0,
limit:10

3)如果只有一个或两个参数,则可以使用@PathVariable

@GetMapping("/users/{userId}")
public User getUser(@PathVariable("userId") Long userId) {
          ...
}

请求应类似于以下serviceUrl / apiUri / users / 123