Java 使用JSON请求并生成不同的输出
您能给我指出这篇文章或向我解释如何声明RESTfulWeb服务,该服务使用JSON请求并基于JSON中的参数生成不同格式的输出,这意味着客户可以获得JSON格式的输出,但也可以获得pdf格式的输出。我在JBoss5.1上使用Java和RestEasy。您可以这样使用Java 使用JSON请求并生成不同的输出,java,json,rest,restful-url,Java,Json,Rest,Restful Url,您能给我指出这篇文章或向我解释如何声明RESTfulWeb服务,该服务使用JSON请求并基于JSON中的参数生成不同格式的输出,这意味着客户可以获得JSON格式的输出,但也可以获得pdf格式的输出。我在JBoss5.1上使用Java和RestEasy。您可以这样使用 @Path("/") public class Test { @Path("/test") @POST @Consumes("application/json") @Produces("text/plain") public R
@Path("/")
public class Test {
@Path("/test")
@POST
@Consumes("application/json")
@Produces("text/plain")
public Response addOrderJSON(OrderDetails details) {...}
}
您可以将请求映射到返回RestEasy
Response
对象的方法上,使用ResponseBuilder
构建响应,根据JSON中的参数动态设置响应的mime类型
@POST
@Path("/foo")
@Consumes("application/json")
public Response fooService(MyObject obj) {
MyResponseEntity entity = MyObjectService.retrieveSomethingFrom(obj);
return Response.status(200).entity(entity).type(obj.isXml() ? "text/xml" : "application/json").build();
}
这样,如果表示传入JSON的
MyObject
域对象的xml
参数设置为true,则Response
对象将参数化以生成text/xml
,否则它将生成application/JSON
。RestEasy应该完成其余工作。服务在外部调用,客户端没有对“MyObject”的引用。那会是个问题吗?他会如何称呼这个服务?您的服务如何将JSON解析为域对象?您说过在提供给服务的JSON中有一个参数。如果是这样,当JSON被转换成Java对象时,这个属性上有一个getter,这样您就可以决定应该生成什么类型的数据(JSON、xml等等)。您的客户端正在发送JSON,所以这不是什么大问题。我知道了,我正在使用Jackson作为提供者将请求(反)序列化到域对象中。。