2011-06-11 32 views
1

目标是使用JAX-RS创建剩余完整的Web服务,这将根据用户请求选择性地以json或xml格式返回结果。例如,如果用户发出下面的方式GET请求将结果以JSON格式返回:使用JAX-RS的多种内容类型支持

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

同样,如果用户发出下面的请求得到的,结果将在XML返回格式:

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

我不想使用请求参数来做到这一点(即http://api.myurl.com/order/123?format=json)。使用.json.xml修补后缀对我来说似乎更直观。

使用JAX-RS API做这件事的最佳策略是什么?

回答

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框架使用的内容协商决定序列化方法。

相关问题