如何获取REST请求的请求内容类型?

时间:2015-05-15 12:42:36

标签: java rest jaxb jax-rs

使用JAXB实现REST-Webservice,我们有几种方法可以产生输出。

包含所有这些方法的类使用@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })进行注释。如果请求进入happy-path(没有错误发生),我们在方法中返回POJO,JAXB动态地将这些对象编组为application/xmlapplication/json,因为客户端通过{{1}请求它们在请求标题中。

我的问题是如何获取请求的内容类型,因为如果发生错误,我们会抛出一个带有响应的Accept: application/xxx;,该响应应包含格式化为请求的内容类型的自定义错误消息。

1 个答案:

答案 0 :(得分:4)

你可以......

使用@HeaderParam("Accept")

进行注入
public Response doSomething(@HeaderParam("Accept") String accept) {
    // you may need to parse it as the value is not always as
    // simple as application/json
}

你可以......

注入HttpHeaders,您可以选择几个选项

public Response doSomething(@Context HttpHeaders headers) {
    String accept = headers.getHeaderString(HttpHeaders.ACCEPT);
    List<MediaType> acceptableType = headers.getAcceptableMediaTypes();
}