我正在实现预匹配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
中的此信息可用,但encodedPath
和matchingPath
是相同的。
你能帮我解决这个问题吗?
答案 0 :(得分:3)
From the @PreMatching documentation:
可应用于容器请求筛选器的全局绑定批注,指示在实际资源匹配发生之前,应在应用程序中的所有资源上全局应用此类筛选器。
在调用过滤器时,不清楚将匹配哪个资源。您的过滤器可能会更改requestUri甚至是影响匹配的方法,因此您无法在此处获取此信息。
在非@PreMatching
ContainerRequestFilter中,您可以通过ContainerRequestContext.getUriInfo().getMatchedURIs()或注册已ResourceInfo的answered here来获取更多信息。