java – 将URI路径传递给JAX-RS提供程序

我最近实施了Jersey JAX-RS Rest服务.我创建了一个JIBX提供程序,允许用户在XMLJava类型之间解组和编组.我还想通过在URL路径中指定版本来对我的服务进行版本控制.版本控制将包括用于编组和解组Java类型的消息绑定版本.

因此,必须将版本传递给自定义JIBX提供程序,因此必须传递包含该版本的URL路径.但是,Provider接口(MessageBodyWriter和MessageBodyReader)不在其接口方法中提供URI路径.

以下是MessageBodyWriter接口的writeTo()方法的方法签名:

writeTo(Object, Type, Annotation[], MediaType, MultivaluedMap, OutputStream)

此方法参数不包含路径uri,因此,自定义jibx提供程序无法知道应该使用哪个消息绑定版本来编组Java类型.有没有解决的办法?

解决方法:

如果你想要比HttpServletRequest更多的JAX-RS,你可以注入一个javax.ws.rs.core.UriInfo.

public class MyProvider implements MessageBodyWriter {
    @javax.ws.rs.core.Context
    javax.ws.rs.core.UriInfo uriInfo;
}

我假设你使用@javax.ws.rs.PathParam来捕获path参数.然后,您可以使用UriInfo.getPathParameters().您还可以回退到UriInfo.getPathSegments()以获取您正在寻找的信息.这样可以省去自己解析请求URI的麻烦.任何JAX-RS实现都应该能够做到这一点.

上一篇:java – 关注Jersey Tutorial


下一篇:java – 杰克逊在地图中捕捉到无法识别的字段