如何在JAX-RS ContainerRequestFilter中获取路径模板?
在JAX-RS如何在JAX-RS ContainerRequestFilter中获取路径模板?,jax-rs,resteasy,Jax Rs,Resteasy,在JAX-RSContainerRequestFilter中,我希望获得请求的未解析路径URI;i、 e.类似于“todos/{id}”的东西。通过requestContext.getUriInfo().getPath()我只获得已解析参数的路径,例如“todos/1”。有没有办法用参数来获取路径?您可能只需要构建模板。没那么难。您可以访问资源类和方法(从注入的ResourceInfo),只需使用UriBuilder方法即可。它有接受Class和Method的path()方法,它将根据这些对象的
ContainerRequestFilter
中,我希望获得请求的未解析路径URI;i、 e.类似于“todos/{id}”的东西。通过requestContext.getUriInfo().getPath()
我只获得已解析参数的路径,例如“todos/1”。有没有办法用参数来获取路径?您可能只需要构建模板。没那么难。您可以访问资源类和方法(从注入的ResourceInfo
),只需使用UriBuilder
方法即可。它有接受Class
和Method
的path()
方法,它将根据这些对象的@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();
}
}
公共类UriTestingFilter实现ContainerRequestFilter{
@上下文
私有资源信息资源信息;
@凌驾
公共无效筛选器(ContainerRequestContext请求)引发IOException{
UriInfo-UriInfo=request.getUriInfo();
Class resourceClass=resourceInfo.getResourceClass();
方法resourceMethod=resourceInfo.getResourceMethod();
UriBuilder partialUriBuilder=UriBuilder.fromResource(resourceClass)
.路径(资源法);
字符串partialUri=partialUriBuilder.toTemplate();
URI baseUri=uriInfo.getBaseUri();
UriBuilder fullUriBuilder=UriBuilder.fromUri(baseUri)
.path(资源类)
.路径(资源法);
字符串fullUri=fullUriBuilder.toTemplate();
}
}
获取资源信息的另一种方法是实现动态功能。