Kev*_*ave 6 java rest response jax-rs resteasy
如何在响应中发送自定义对象.我只想要从我的对象打印的值.
可以说我有一个类型的对象Person.我试图像这样发送REST响应体.
ResponseBuilder response = Response.ok().entity(personObj);
return response.build();
Run Code Online (Sandbox Code Playgroud)
但我得到500错误.也试过这个:
ResponseBuilder response = Response.status(Status.OK).entity(personObj);
return response.build();
Run Code Online (Sandbox Code Playgroud)
同样的错误.
尝试将内容类型设置为text/xml.没用 我在这里错过了什么?我试过谷歌搜索.但那里没有很多例子,尤其是自定义对象;
如果我只是将一个字符串传递给entity()方法,它返回正常.
gre*_*ker 14
为了从Resteasy资源方法返回数据,您需要做几件事情,具体取决于您要返回的内容.
您需要使用注释注释您的资源方法,@Produces
以告诉Resteasy方法的返回类型应该是什么.
例如,下面的方法返回XML和JSON,具体取决于客户端在其Accept标头中请求的内容.
Run Code Online (Sandbox Code Playgroud)@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注释注释您的类,以告诉它如何编组和解组该对象.
Run Code Online (Sandbox Code Playgroud)@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 {
}
Run Code Online (Sandbox Code Playgroud)
只需实现接口并像任何其他Provider一样注册它.
如果您想阅读自定义内容类型,则需要实现自定义MessageBodyReader来处理传入类型并将其添加到@Consumes接收方法的注释中.
| 归档时间: |
|
| 查看次数: |
14002 次 |
| 最近记录: |