JAX-RS 中的相对路径

Relative path in JAX-RS

我正在使用 Maven Jax-RS 版本 1.19

我正在寻找一种到达相对路径的方法。

例如:

我的url:localhost/css/all

此 url 转到 css

的控制器

当我post以下url: localhost/parameter/anotherparam/css/all

那我也想去同一个控制器

我无法在建议或 google 上真正找到适合我的问题的答案。 (有趣的是 Whosebug 仍然可以比 google 更好地搜索自己的网站)

所以这是我的问题:

如何在 Jax-RS 中创建相对路径,以便无论 url 在前面(或后面)

我的css控制器:

@Path("/css")
@Singleton
public class CssController{

    @GET
    @Path("{id}")
    public Response getCss(@Context HttpServletRequest request, @PathParam("id") String id
       String path = request.getServletContext().getRealPath("/css/"+id+".css");

        File f = new File(path);
        if (f.exists()) {
            return Response.ok(new Viewable(path)).build();
        } 
        return null;

}

我在我的路径中包含了以下正则表达式以使其接受或不接受参数所以现在 url

css/all

/test/alsotest/css/all

都转到 css 控制器:

@Singleton
@Path("{param1 : ^(?![\s\S])|(\w+/)*?}css/{id}")
public class CssController {

    @GET
    @Produces(MediaType.TEXT_HTML)
    public Response getCss(@Context HttpServletRequest request, @PathParam("id") String id) 
    {
        String path = request.getServletContext().getRealPath("/css/"+id+".css");

        File f = new File(path);
        if (f.exists()) {
            return Response.ok(new Viewable(path)).build();
        } 
    return null;
}

请偷偷吃好!

使用正则表达式:

^(?![\s\S])|(\w+/)*?

在参数中:

{参数 1 : ^(?![\s\S])|(\w+/)*?}

所以我的完整路径是:

{param1 : ^(?![\s\S])|(\w+/)*?}css/{id}

我认为这对图像等也很有用,因为它们可以有相对路径,这样调用的位置无关紧要,只有资源的位置!

我想知道你们 Whosebug 的人对这个话题的看法。

敬请期待!