使用JAX-RS支持多种内容类型

时间:2011-06-11 10:57:14

标签: web-services rest java-ee java-ee-6

目标是使用JAX-RS创建一个休息完整的Web服务,该服务将以json或xml格式有选择地返回结果,具体取决于用户请求。例如,如果用户以下列方式发出GET请求,则结果将以json格式返回:

http://api.myurl.com/order/1234.json

同样,如果用户在以下请求中发出get,结果将以xml格式返回:

http://api.myurl.com/order/123.xml

我不想使用请求参数来执行此操作(即http://api.myurl.com/order/123?format=json)。使用.json.xml后期修复对我来说更直观。

使用JAX-RS api执行此操作的最佳策略是什么?

1 个答案:

答案 0 :(得分:2)

一种方法是更彻底地使用@Path注释:

@GET
@Path("/order/{id}.xml")
@Produces("application/xml")
public Order getOrderAsXML(@PathParam("id") int id) {
    return realGetOrder(id);
}

@GET
@Path("/order/{id}.json")
@Produces("application/json")
public Order getOrderAsJSON(@PathParam("id") int id) {
    return realGetOrder(id);
}

private Order realGetOrder(int id) {
    // ...
}

但是,我倾向于使用单一方法为两者提供服务,让客户端和支持JAX-RS框架使用内容协商来决定序列化方法。