基于Accept标头值指定Jersey资源处理程序

时间:2014-08-01 23:38:08

标签: java rest jersey jax-rs dropwizard

我希望有不同的函数根据Accept标头处理对特定资源的请求。具体来说,如果存在Accept标头,则应调用返回application-json的content-type的函数,否则如果不存在Accept标头,则应调用返回text / plain内容的不同函数。有没有办法用Jersey注释做到这一点?

顺便说一句,这是在dropwizard json Web服务的上下文中。

1 个答案:

答案 0 :(得分:0)

我有同样的问题(这就是我来这里的原因)。关于@Produces的提示解决了这个问题:

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

@Path("/Test")
@Produces(MediaType.TEXT_HTML)
public class TestResource {
   @GET
   @Path("/test")
   @Produces(MediaType.APPLICATION_JSON)
   public String json() {
      return "{\"hello\": \"world\"}";
   }

   @GET
   @Path("/test")
   @Produces(MediaType.APPLICATION_XML)
   public String xml() {
      return "<hello>World</hello>";
   }

   @GET
   @Path("/test")
   public String html() {
      return "<html>Hello world</html>";
   }
}

现在调用“/ Test / test”服务会产生不同的结果,具体取决于“Accept”标题。