为了从Resteasy资源方法返回数据,您需要根据要返回的内容执行几项操作。
您需要使用注释对资源方法进行
@Produces注释,以告诉Resteasy该方法的返回类型应该是什么。例如,以下方法根据
客户端在Accept标头中的要求返回XML和JSON 。
@GET@Produces({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML})public Response foo(){ PersonObj obj = new PersonObj(); //Do something... return Response.ok().entity(obj).build();}
Resteasy默认支持封送以下数据类型:
如果您希望支持的数据类型在此表中,那么这意味着JAXB支持它们,而您所需要做的就是PersonObj
用JAXB注释对您的类进行注释,以告诉它如何编组和解组对象。
@XmlRootElement@XmlType(propOrder = {"firstName", "lastName"})public class PersonObj{ private String firstName; private String lastName; //Getters and Setters Removed For Brevity}
如果不立即支持您的内容类型怎么办?
如果您具有要编组的自定义内容类型,则需要创建一个MessageBodyWriter实现,该实现将告诉Resteasy
如何编组该类型。
Provider@Produces({"application/x-mycustomtype"})public class MyCustomTypeMessageBodyWriter implements MessageBodyWriter {}只需实现该接口并像其他任何提供者一样注册它即可。
如果您想读取自定义内容类型,则需要实现一个自定义
MessageBodyReader来处理传入的类型,并将其添加到
@Consumes您的接收方法的注释中。



