dropwizard:从同一个类生成html和json

sds*_*sds 2 java dropwizard

有没有办法从客户端控制输出格式?

我有一节课

@Produces(MediaType.TEXT_HTML)
Run Code Online (Sandbox Code Playgroud)

我希望它在客户端请求时生成json.

我可以逐字复制该类,只替换@Path@Produces注释,但这看起来完全是浪费.

我想知道客户端是否可以将类似&content-type = application/json的内容添加到URL并让我的服务器使用json而不是html进行响应?

小智 9

您需要将资源注释为同时提供HTML和JSON:

@Produces({MediaType.TEXT_HTML, MediaType.APPLICATION_JSON})
Run Code Online (Sandbox Code Playgroud)

然后确保已MessageBodyWriter注册实现以处理方法的返回类型.Dropwizard JacksonMessageBodyProvider应该处理JSON; 如果你使用Dropwizard视图,ViewMessageBodyWriter应该处理剩下的事情.如果您的客户application/json在请求的Accept标题中,Jersey将与客户进行内容协商.