我如何使用xml / json和form-urlencoded?

时间:2016-12-28 14:07:17

标签: json xml forms jax-rs

我尝试使用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/xmlapplication/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有效。

规范是否正常?

1 个答案:

答案 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) {
 }

使用这种方法,您还可以简化响应生成,因为在每种情况下响应可能都不同