缺少所需的请求正文

Posted

技术标签:

【中文标题】缺少所需的请求正文【英文标题】:Required request body is missing 【发布时间】:2015-12-30 17:04:21 【问题描述】:

我是 Spring and Rest 的新手。 我像这样写了一个简单的休息:

@RequestMapping(value = "/loginTest", method = RequestMethod.POST)
@ResponseBody
public Response loginTest(@RequestBody LoginRequest request) 
    System.out.println("enter loginTest.");
    String account = request.getAccount();
    String password = request.getPassword();
    Response res = new Response();
    return res;

LoginRequest 是这样的:

public class LoginRequest 
    private String account;
    private String password;
    public String getAccount() 
        return account;
    
    public void setAccount(String account) 
        this.account = account;
    
    public String getPassword() 
        return password;
    
    public void setPassword(String password) 
        this.password = password;
    

当我通过命令测试这个时:

curl -X POST ""account": "aaa","password": "bbb"" -H "Content-type:application/json" http://localhost:8080/user/loginTest

但我得到了结果:

[1/2]: account: aaa --> <stdout>
--_curl_--account: aaa
curl: (6) Could not resolve host: account; nodename nor servname provided, or not known

  "timestamp" : "2015-12-30T16:24:14.282+0000",
  "status" : 400,
  "error" : "Bad Request",
  "exception" : "org.springframework.http.converter.HttpMessageNotReadableException",
  "message" : "Bad Request",
  "path" : "/user/loginTest"

还有在 Eclipse 控制台中:

Failed to read HTTP message: org.springframework.http.converter.HttpMessageNotReadableException: Required request body is missing: public com.test.response.Response com.test.service.UserService.loginTest(com.test.model.request.LoginResquest)

LoginRequest 类是否需要注解?因为 Jason 不能转换为类? 有人能帮我解决这个问题吗?

【问题讨论】:

“无法解析主机”错误怎么办。您是否尝试过先修复该部分? 点击here!这对我有用。 [博客] [博客]:***.com/questions/29223683/… 【参考方案1】:

请求正文应该在 --data 开关中发送,在 curl 中。

看到这个https://superuser.com/questions/149329/what-is-the-curl-command-line-syntax-to-do-a-post-request

所以你的请求现在应该变成

curl -X POST --data '"account": "aaa","password": "bbb"' -H "Content-Type:application/json"  http://localhost:8080/user/loginTest

此外,如果您可以在发送请求的机器上运行浏览器,那么您可以尝试一些 REST 客户端插件。它们更易于使用并提供保存请求和历史记录功能。 检查this plugin

【讨论】:

以上是关于缺少所需的请求正文的主要内容,如果未能解决你的问题,请参考以下文章

使用 ContentCachingRequestWrapper 后缺少所需的请求正文

使用 HttpServletRequestWrapper 制作副本后缺少所需的请求正文

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

缺少所需的请求正文内容:org.springframework.web.method.HandlerMethod$HandlerMethodParameter

缺少所需的请求正文:public org.springframework.http.ResponseEntity<..model.Customer>

上传新项目所需的标题和正文是啥?