此資源方法如何產生json
或xml
結果?資源方法如何生成或使用兩種不同的MIME類型?
我應該解析請求接受標頭,並作出if/else
分支,或jersey會爲我做 ?
@GET
@Produces({"application/xml", "application/json"})
public String doGetAsXmlOrJson() {
...
}
doGetAsXmlOrJson()
可能實現的例子很好。
此資源方法如何產生json
或xml
結果?資源方法如何生成或使用兩種不同的MIME類型?
我應該解析請求接受標頭,並作出if/else
分支,或jersey會爲我做 ?
@GET
@Produces({"application/xml", "application/json"})
public String doGetAsXmlOrJson() {
...
}
doGetAsXmlOrJson()
可能實現的例子很好。
的@Produces註釋用於指定MIME媒體類型或 表示資源可以產生併發送回客戶端。
所以它實際上並不告訴JAX-RS在響應中產生兩種內容類型。它最初作爲確定使用哪種處理程序方法的指標。如果您在同一路徑上有兩個GET
,@Produces
將有助於選擇最合適的路徑。
在您的投射中,該方法可以產生兩種內容類型。它最終產生哪一個取決於請求中的Accept
標題。
,從同樣的教程
如果資源類是能夠產生多於一個的MIME媒體類型 ,選擇由客戶端所申報將對應於最 可接受的媒體類型的資源的方法的。更具體地說, HTTP請求的Accept頭部聲明瞭最可接受的 。
您返回String
類型的事實表明您的實施需要產生正確的內容。相反,如果您返回某種Pojo,我相信Jersey會使用適當的轉換工具來生成XML(可能使用JAXB)或JSON(也許使用Jackson)。
我應該解析請求接受標題並做一個if/else分支嗎? – tarrsalah
@tarrsalah是的,這似乎適用於'String'返回類型。我相信應該有一個'@ HeaderParam'。 –