2012-07-24 39 views
2

有沒有辦法從客戶端控制輸出格式?dropwizard:生成同一類的html和json

我有一類

@Produces(MediaType.TEXT_HTML) 

,我希望它產生JSON當客戶端請求。

我可以複製類逐字,僅更換@Path@Produces註解,但是這看起來像一個總的浪費。

不知該客戶端可以追加像&內容類型=應用程序/ JSON的URL,並與JSON而不是HTML我的服務器響應?

回答

9

你需要註釋資源提供HTML和JSON:

@Produces({MediaType.TEXT_HTML, MediaType.APPLICATION_JSON}) 

然後,只需確保你有註冊後處理方法的返回類型MessageBodyWriter實現。 Dropwizard的JacksonMessageBodyProvider應該處理JSON;如果你使用Dropwizard Views,ViewMessageBodyWriter應該處理剩下的部分。如果您的客戶端在請求的Accept標頭中有application/json,Jersey將與客戶端進行內容協商。

+0

如何註冊MessageBodyWriter?我的返回類型擴展了View;這足以生成HTML。我如何控制瀏覽器的Accept頭?謝謝! – sds 2012-07-24 21:03:03

+0

你不需要註冊任何東西,真的。它應該只是工作。 – 2012-07-24 22:21:09

+0

至於控制'Accept'頭:你不能。 – 2012-07-24 22:21:36