使用JAXB实现REST-Webservice,我们有几种方法可以产生输出。
包含所有这些方法的类使用@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
进行注释。如果请求进入happy-path(没有错误发生),我们在方法中返回POJO,JAXB动态地将这些对象编组为application/xml
或application/json
,因为客户端通过{{1}请求它们在请求标题中。
我的问题是如何获取请求的内容类型,因为如果发生错误,我们会抛出一个带有响应的Accept: application/xxx;
,该响应应包含格式化为请求的内容类型的自定义错误消息。
答案 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();
}