2012-07-24 50 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