Spring post方法“缺少所需的请求正文”

新手上路,请多包涵
@PostMapping(path="/login")
public ResponseEntity<User> loginUser(@RequestBody Map<String, String> userData) throws Exception {
    return ResponseEntity.ok(userService.login(userData));
}

我在 UserController 中有这种登录方法。问题是当我尝试发出登录请求时出现此错误:

 {
"timestamp": "2018-10-24T16:47:04.691+0000",
"status": 400,
"error": "Bad Request",
"message": "Required request body is missing: public org.springframework.http.ResponseEntity<org.scd.model.User> org.scd.controller.UserController.loginUser(java.util.Map<java.lang.String, java.lang.String>) throws java.lang.Exception",
"path": "/users/login"
}


在此处输入图像描述

原文由 Ionut 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 926
2 个回答

如果是 POST 请求,您必须将其作为 JSON 传递到您的正文中。

在此处输入图像描述

原文由 cosmos 发布,翻译遵循 CC BY-SA 4.0 许可协议

发生这种情况是因为您没有将正文传递给您的服务器。正如我在您的屏幕截图中看到的那样,您将电子邮件和密码作为 ResquestParam 传递。

要处理此值,您可以执行以下操作:

 @PostMapping(path="/login")
public ResponseEntity<User> loginUser(@RequestParam("email") String email, @RequestParam("password") String password) {
     //your imp
}

为了接受空正文,您可以在 RequestBody 注释中使用 required 参数:

 @RequestBody(required = false)

但这不会解决您的问题。将作为 RequestParam 接收。

如果你想使用 RequestBody ,你应该在 body 中传递电子邮件和密码。

原文由 L. Figueredo 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题