2011-06-11 68 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框架使用的內容協商決定序列化方法。

相關問題