目标是使用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执行此操作的最佳策略是什么?
答案 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框架使用内容协商来决定序列化方法。