如何在响应中发送自定义对象。我只希望
从对象中打印出值。
可以说我有一个类型的对象Person
。我正在尝试
像这样发送REST响应正文。
ResponseBuilder response = Response.ok().entity(personObj);
return response.build();
但是我得到了500
错误。也尝试了这个:
ResponseBuilder response = Response.status(Status.OK).entity(personObj);
return response.build();
同样的错误。
尝试将内容类型设置为text/xml
。没用 我在这里想念什么?我尝试了谷歌搜索。但是这里没有很多示例,特别是对于自定义
对象。
如果我只是将字符串传递给entity()
方法,它将返回正常。
为了从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
您的接收方法的注释中。
问题内容: 我现在开始在JAX-RS中使用新的客户端API库,并且到目前为止真的很喜欢它。但是我发现一件事我不知道。我使用的API具有自定义错误消息格式,例如: 它返回400作为状态代码,但还包含描述性错误消息,以告诉您您做错了什么。 但是,JAX-RS 2.0客户端将400状态重新映射为通用状态,因此我丢失了良好的错误消息。它正确地将其映射到BadRequestException,但带有通用的“
然而,JAX-RS2.0客户机正在将400状态重新映射为一般的状态,因此我丢失了良好的错误消息。它正确地将其映射到一个BadRequestException,但带有一个通用的“HTTP 400 Bad Request”消息。 是否有某种类型的拦截器或自定义错误处理程序可以被注入,以便我访问真正的错误消息。我一直在查看文档,但看不到任何方法。 我现在正在使用泽西,但我用CXF尝试了这个,得到了同样的
我正在尝试实现一个CORS响应过滤器,以允许来自我的JavaScript前端的跨域引用。我使用的是Resteasy附带的< code > wildly 10.0 . final ,如果我理解正确的话,它是< code>JAX-RS 2.0的补充。 EDIT:将@Provider添加到CorsResponseFilter中,并作为一个单独的元素添加到RestServiceConfig中。 我需要做什
我正在尝试为我开发的REST API创建一个过滤器,该API遵循以下问题,即使用JAX-RS和Jersey进行基于REST令牌的身份验证的最佳实践。 我错过了什么?提前道谢。
问题内容: 在移动应用程序和Web服务之间具有某种代理,发出发布请求时的响应使我们感到困惑。我们收到状态为200的回复:OK。但是我们找不到/提取JSON响应主体。 我们正在使用JAX-RS。有人可以提供一些提示来从服务器响应中提取JSON正文()吗? 问题答案: 试试这个: 编辑 感谢@Martin Spamer提及它仅适用于Jersey 1.x罐子。适用于Jersey 2.x
什么是resteasy?RESTEasy和JAX-RS有什么区别?和之间有什么区别?