我尝试使用application/(xml|json)
和application/x-www-form-urlencoded
的相同方法进行测试。
我的实体类看起来像这样
@XmlRootElement
public class Person {
@XmlElement private int age;
@XmlElement private String name;
}
使用以下方法,
@POST
@Consumes({APPLICATION_XML, APPLICATION_JSON})
public Response createSingle(@NotNull final Person person) {
}
application/xml
和application/json
都可以正常使用。
现在,当我像这样更改Person
类
@XmlRootElement
public class Person {
@XmlElement @FormParam("age") private int age;
@XmlElement @FormParam("name" private String name;
}
并尝试使用以下(更改)方法。
@POST
@Consumes({APPLICATION_XML, APPLICATION_JSON, APPLICATION_FORM_URLENCODED})
public Response createSingle(@NotNull @BeanParam final Person person) {
}
只有application/x-www-form-urlencoded
有效。
规范是否正常?
答案 0 :(得分:2)
我已经阅读了规范,并且接受xml,json和form-params的方法没有任何障碍。但是我担心这应该是一个依赖于实现的细节
由于可以通过内容类型确定执行相同URL的方法,我建议分离接口
@POST
@Path("/creatSingle")
@Consumes({APPLICATION_XML, APPLICATION_JSON})
public Response createSingleXmlJson(@NotNull final Person person) {
}
@POST
@Path("/creatSingle")
@Consumes({APPLICATION_FORM_URLENCODED})
public Response createSingleForm(@NotNull @BeanParam final Person person) {
}
使用这种方法,您还可以简化响应生成,因为在每种情况下响应可能都不同