[英]Set Response media type as either xml or json
这是我正在使用的代码(其他人的项目):
public class MyResponse
public static Response success(String content) {
MyResponse aRsponse = response(content);
return Response.status(Status.OK).entity(aRsponse.getContent()).build();
}
public static MyResponse response(final String content) {
return MyResponse.builder().content(content).build();
}
调用成功方法的GET / POST在其前面带有@Produces(MediaType.TEXT_XML)
。
我已经实现了一些逻辑来确定content
是XML还是JSON,并认为我会将其作为成功的参数。 所以像这样:
public static Response success(String content, boolean isJson)
现在,我需要设置Response的媒体类型(使用if / else)。 我知道我需要一些类似.type(MediaType.TEXT_XML);
东西.type(MediaType.TEXT_XML);
但是鉴于必须使用的代码以及所找到的各种示例和文档,我似乎无法弄清楚。
任何帮助或朝正确方向的指导将不胜感激。 谢谢!
我假设您正在使用JAX-RS,对吗?
看一下Response
对象文档。 您正在寻找type
方法。
http://docs.oracle.com/javaee/6/api/javax/ws/rs/core/Response.ResponseBuilder.html
要设置其他MediaType
,您的代码应类似于:
Response.status(Status.OK).type(MediaType.TEXT_XML).entity(aRsponse.getContent()).build();
在编写代码Response.attribute
,您正在使用构建器模式 。 因此,要将某些内容更改为将要构建的新对象,必须使用适当的方法来为新类的属性设置值。
假设您使用的是JAXB / JAX-RS和最新版本,则无需担心此类问题。 只需返回对象,然后让实现处理其余部分即可。 无需以编程方式设置媒体类型或构建。
例如。
@GET
@Path("/xmlexample")
@Produces(MediaType.APPLICATION_XML)
public MyObject xml() {
return new MyObject();
}
@GET
@Path("/jsonexample")
@Produces(MediaType.APPLICATION_JSON)
public MyObject json() {
return new MyObject();
}
您只需要确保您的课程具有正确的注释即可。 @XmlElement。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.