如何在JAX-RS ContainerRequestFilter中获取路径模板?

问题描述 投票:0回答:1

[从JAX-RS ContainerRequestFilter内部,我想获得请求的未解析路径URI;即类似“ todos / {id}”。通过requestContext.getUriInfo().getPath()我只能得到解析了参数的路径,例如“ todos / 1”。是否可以通过任何方法获取带有参数的路径?

jax-rs resteasy
1个回答
0
投票

您可能只需要构建模板。没那么难。您可以访问资源类和方法(从注入的ResourceInfo),只需使用UriBuilder方法即可。它具有接受path()ClassMethod方法,并将基于这些对象的@Path注释为您构建Uri。然后只需使用UriBuilder#toTemplate()获取模板,例如

public class UriTestingFilter implements ContainerRequestFilter {

    @Context
    private ResourceInfo resourceInfo;


    @Override
    public void filter(ContainerRequestContext request) throws IOException {
        UriInfo uriInfo = request.getUriInfo();

        Class<?> resourceClass = resourceInfo.getResourceClass();
        Method resourceMethod = resourceInfo.getResourceMethod();

        UriBuilder partialUriBuilder = UriBuilder.fromResource(resourceClass)
                .path(resourceMethod);
        String partialUri = partialUriBuilder.toTemplate();

        URI baseUri = uriInfo.getBaseUri();
        UriBuilder fullUriBuilder = UriBuilder.fromUri(baseUri)
                .path(resourceClass)
                .path(resourceMethod);
        String fullUri = fullUriBuilder.toTemplate();
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.