3
我想为我的REST API端点应用授权过滤器,并且过滤器需要路径参数来执行过滤。这里是我的终点和代码:如何从ContainerRequestContext获取路径参数
端点:
curl --url 'localhost:80/reports/resources/org/12345/product/111 ' --request GET --header 'Authorization: <token here>'
资源代码:
@Path("/resources")
public class MyResource extends AbstractResource {
...
@GET
@Path("/org/{orgId}/product/{productId}")
@Produces(MediaType.APPLICATION_JSON)
@RoleAuthenticated
public Response getResourcesReport(@PathParam("orgId") String orgId,
@PathParam("productId") String productId,
@Context HttpHeaders headers){....}
筛选:
@PreMatching
@RoleAuthenticated
public class AuthorizationFilter implements ContainerRequestFilter {
@Override
public void filter(ContainerRequestContext requestContext) throws IOException {
MultivaluedMap<String, String> pathparam = requestContext.getUriInfo().getPathParameters(); <-- return empty map
}
我期待requestContext.getUriInfo().getPathParameters()
返回以下的地图:
orgId 12345
productId 111
它是如何返回空映射的?以及如何从ContainerRequestContext
获得路径参数?
你是对的!我删除@PreMatching后,它的工作原理 – user468587