【发布时间】:2016-02-01 03:47:23
【问题描述】:
我正在开发 java restful web 服务。我让它适用于 GET 请求,但 POST 请求不起作用。我的控制器类是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();
}
还尝试了 RequestBody 而不是 ModelAttribute。
我使用Postman extension 发送 POST 请求。例如:
{
"username": "asd",
"password": "sfsdg",
"email": "sdfdsf@fdsfkg.com"
}
但我得到了错误:
description The server refused this request because the request entity is in a format not supported by the requested resource for the requested method.
我做错了什么?模型类是:
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;
}
}
【问题讨论】:
-
向我们展示你的模型类的代码
-
“还尝试了 RequestBody 而不是 ModelAttribute。”,没错,但您还需要模型上的无参数构造函数,否则 Jackson 无法创建它。或使用
@JsonCreator
标签: java json web-services rest