JAX-RS:在ContainerRequestFilter中检索路径模式

时间:2014-11-20 15:19:11

标签: java jax-rs resteasy

我正在实现预匹配ContainerRequestFilter,并希望检索即将被调用的资源的@Path模式。

这是我的资源

Path("/v1/partner/{partnerId}/adresse")
public interface AdresseResource
{
   @GET
   @Produces({ MediaType.APPLICATION_JSON })
   public Response handleAdresseCollectionGet(@Context UriInfo uriInfo, @PathParam("partnerId") String partnerId);

   // Other methods omitted
}

在我的过滤器中,我想从Path注释中获取/v1/partner/{partnerId}/adresse模式。但我无法将其从ContainerRequestContext实例中删除。我希望UriInfo中的此信息可用,但encodedPathmatchingPath是相同的。

你能帮我解决这个问题吗?

enter image description here

1 个答案:

答案 0 :(得分:3)

From the @PreMatching documentation

  

可应用于容器请求筛选器的全局绑定批注,指示在实际资源匹配发生之前,应在应用程序中的所有资源上全局应用此类筛选器。

在调用过滤器时,不清楚将匹配哪个资源。您的过滤器可能会更改requestUri甚至是影响匹配的方法,因此您无法在此处获取此信息。

在非@PreMatching ContainerRequestFilter中,您可以通过ContainerRequestContext.getUriInfo().getMatchedURIs()或注册已ResourceInfoanswered here来获取更多信息。