我正在使用Rest Easy 3.0和Spring开发休息Web服务。我创造了 像这样的一项服务
@POST
@Path("add-user")
@Consumes({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.APPLICATION_FORM_URLENCODED})
@Produces({MediaType.APPLICATION_JSON})
public String saveUser(@Form User user);
这是我的bean类
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name="user")
public class User {
@FormParam("username")
@XmlElement(name="username")
String username;
@FormParam("password")
@XmlElement(name="password")
String password;
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;
}
}
当我提交表单时,它工作得很好但是当我提交JSON或XML数据时,它不起作用。但是,如果我删除@Form注释,它适用于JSON和XML,但不适用于表单。
有什么方法可以适用于所有FORM,XML和JSON吗?
答案 0 :(得分:1)
简单方法实现您想要的方法有不同的方法:
@POST
@Path("add-user")
@Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
public String saveUser(User user);
@POST
@Path("add-user")
@Consumes({ MediaType.APPLICATION_FORM_URLENCODED })
public String saveUser(@FormParam("username") String username,
@FormParam("password") String password);
application/x-www-form-urlencoded
媒体类型仅适用于Form
,MultivaluedMap
和@FormParam
。如果您提供自定义MessageBodyReader
实施,则仅User
等仲裁类型才有效。