JAX-RS中的相对路径

时间:2017-04-06 21:01:14

标签: path jersey jax-rs relative-path include-path

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

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

例如:

我的网址: localhost / css / all

此网址转到css的控制器

当我发布以下网址时: 的本地主机/参数/ anotherparam / CSS /所有

然后我也想去同一个控制器。

我无法在建议或谷歌上找到适合我的问题的答案。 (有趣的是,Stackoverflow仍然可以比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;

}

1 个答案:

答案 0 :(得分:1)

我将以下正则表达式包含在我的路径中以使其获取参数或不是,所以现在的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 + /)*

参数:

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

所以我的完整路径是:

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

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

我希望你能想到这个话题的人们。

期待!