有没有办法从客户端控制输出格式?
我有一个课程
@Produces(MediaType.TEXT_HTML)
我希望它在客户端请求时生成 json 。
我可以逐字复制课程,只替换 @Path 和 @Produces 注释,但这看起来完全是浪费。
我想知道客户端是否可以将类似& content-type = application / json 的内容添加到URL并让我的服务器使用json而不是html进行响应?
答案 0 :(得分:9)
您需要将资源注释为同时提供HTML和JSON:
@Produces({MediaType.TEXT_HTML, MediaType.APPLICATION_JSON})
然后确保注册了MessageBodyWriter
个实现来处理方法的返回类型。 Dropwizard的JacksonMessageBodyProvider
应该处理JSON;如果你使用Dropwizard视图,ViewMessageBodyWriter
应该处理剩下的事情。如果您的客户在请求的application/json
标题中有Accept
,则Jersey会与客户进行内容协商。