如何在JAX-RS @Path中获取路径名作为参数

时间:2017-04-10 17:32:58

标签: rest jax-rs

我想创建一个REST服务,其中参数是一个具有非固定数量的术语的路径。例如:

@Path("obj")
public class ObjectResource {

   @GET
   @Path(???)
   public Response getObj(@Param(???) String path) {
      ....
   }
}

如果请求网址如下:

http://myhost.xyz/app/obj/var/share/www

方法 getObj 会将路径参数作为字符串

var/share/www

或者,可以在单独的有序元素中使用“var”“share”“www”获得数组(或 Collection )。 (无论如何,我只会对单个字符串执行 String.split()。)

可以这样做吗?

1 个答案:

答案 0 :(得分:2)

您可以尝试使用PathSegment

@Path("obj")
public class ObjectResource {

   @GET
   @Path("{var: \\.+}")
   public Response getObj(@PathParam("var") final PathSegment path) {
       final String value = path.getPath();
   }
}

编辑:实际工作原理如下:

@GET
@Path("obj")
public class ObjectResource {    

    @Path("{part: .*}")
    @Produces(MediaType.APPLICATION_JSON)
    public Response getObj(@PathParam("part") String pathpart) {

        // just return the path
        return Response.ok(pathpart).build();
    }
 }