RESTEasy:如何回归其他匹配的资源方法?

时间:2016-10-12 12:02:28

标签: java jax-rs resteasy

在RESTEasy应用程序中,我需要在运行时确定特定资源方法是否可以根据路径/查询参数处理某个路径。如果无法处理,我希望请求回退到其他方法。 E.g:

@Path("/")
class MyResource {
    @GET
    @Path("{path : .*}")
    public Response handleRedirects(@PathParam("path") String path) {
        if (hasRedirectFor(path)) {
            return redirectTo(path);
        }
        else {
            //somehow pretend that this method didn't exist and fallback to the next best match
        }
    }

    @GET
    @Path("img/{image}")
    public Response handleImage(@PathParam("image") String someParam) {
        return createImageResponse(image);
    }

    @GET
    @Path("{template : .*\\.html}")
    public Response handleTemplate(@PathParam("template") String template) {
        return createTemplateResponse(template);
    }
}

这是否可行,而不必使用RequestFilter? (我不想使用RequestFilter,因此我需要自己实现handleSometimes的网址匹配。

编辑:请求提供更多详细信息的评论,因此我更改了示例以更接近我的现实世界情况。我有一个处理各种请求的典型网络服务器,在上面的示例中,我将其简化为图像和模板。由于遗留原因,有一些从第三方到不存在(或不再存在)但我们不想破解的网址的传入链接。因此,我们希望在这些URL上提供重定向,这是handleRedirects函数应该执行的操作。

遗憾的是,遗留和支持网址的模式存在重叠,这使我无法编写@Path注释以静态路由到正确的方法。此外,我只知道我是否真的可以从遗产中生成重定向 - >当我在运行时检查路径时,如果失败,我想回到其他方法。因此,我希望能够在方法本身中确定是否可以处理请求,并且如果不能,则让RESTEasy回退到下一个匹配的资源。通常这是过滤器会派上用场的东西,但后来我失去了自动提取路径参数或路由到不同方法的能力,我真的很想保留。

0 个答案:

没有答案