在Apache Wink中声明可选命名路径参数的最佳方法是什么

时间:2013-03-27 14:06:57

标签: java rest web apache-wink

使用Apache Wink

在REST路径中定义可选命名参数的最佳方法是什么?

现在我正在使用这样的东西:

/items{sep: (?)}{id: (.*)}")

用于匹配请求,例如:

/items/123
/items/
/items

这样我就可以捕获一个干净的{id}

另一种选择是:

/items{id: (/?/[^/]+?)}

{id}将包含/字符,需要清理。

我在我的框架(µ)Micro中使用Wink并且我打算坚持使用它,建议其他/更好(?)类似的框架此时不会回答这个问题。

谢谢! -florin

1 个答案:

答案 0 :(得分:1)

这可能有点麻烦,不知道,也许这不是比你更好的解决方案(我不知道你的要求),但这就是我的做法。我的资源类有一个注释'@Path(“/ db”)',然后是每个支持的目录级别的连续方法,即,因为REST基于必须将'/'字符视为目录分隔符的URL。

@Path("{id}")
@GET
public Response getJson( @PathParam("id") String id )
{  
    String path = id;
    // TODO
}

处理“db / items”和

@Path("{id1}/{id2}")
@GET
public Response getJson( 
        @PathParam("id1") String id,
        @PathParam("id2") String id2 )
{
    String path = id1 + '/' + id2;
    // TODO
}

处理“db / items / 123”和

@Path("{id1}/{id2}/{id3}")
@GET
public Response getJson( 
        @PathParam("id1") String id1, 
        @PathParam("id2") String id2, 
        @PathParam("id3") String id3 )
{ 
    String path = id1 + '/' + id2 + '/' + id3;
    // TODO
}

处理“db / items / 123/456”。

但是你可以看到这在较长的路径上变得很麻烦,我还没有想出如何处理n深度路径(任何人?)。希望有所帮助。