HTTP状态415 - 请求实体的格式不受支持

nop*_*ope 19 java rest json web-services

我正在研究java restful web服务.我让它为GET请求工作,但POST请求不起作用.我的Controller类是RestController.到目前为止我做了这些:

@RequestMapping(value = "/api/signup", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
public long signUp(@ModelAttribute ApiMemberModel apiMember) {
    memberService = new MemberDetailsService();
    Member m = memberService.createMember(apiMember.getUsername(), apiMember.getPassword(), apiMember.getEmail(), "");
    return m.getId();
}
Run Code Online (Sandbox Code Playgroud)

还尝试了RequestBody而不是ModelAttribute.

我使用Postman扩展来发送POST请求.例如:

{
    "username": "asd",
    "password": "sfsdg",
    "email": "sdfdsf@fdsfkg.com"
}
Run Code Online (Sandbox Code Playgroud)

但我得到错误:

description The server refused this request because the request entity is in a format not supported by the requested resource for the requested method.
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?模型类是:

 public class ApiMemberModel {
    private String username;
    private String password;
    private String email;

    public ApiMemberModel(String username, String password, String email) {
        this.username = username;
        this.password = password;
        this.email = email;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }
}
Run Code Online (Sandbox Code Playgroud)

vto*_*ola 44

我打赌Postman的电话不包括Content-Type: application/json.

HTTP 415表示服务器不理解请求的媒体格式.在你的控制器中,你指定它接受JSON,但是你没有说过请求是否表明正文是那种格式.仅仅因为您将数据放在JSON格式中,并不意味着服务器将识别它,您必须在Content-Type标头中指明它.

  • 谢谢!指定Content-type并添加no-arg构造函数有助于解决我的问题. (2认同)
  • 嗨!即使我在客户端指定Content-Type,我也有同样的问题.你能帮我吗? (2认同)