使用Apache Wink?
在REST路径中定义可选命名参数的最佳方法是什么?现在我正在使用这样的东西:
/items{sep: (?)}{id: (.*)}")
用于匹配请求,例如:
/items/123
/items/
/items
这样我就可以捕获一个干净的{id}
。
另一种选择是:
/items{id: (/?/[^/]+?)}
但{id}
将包含/
字符,需要清理。
我在我的框架(µ)Micro中使用Wink并且我打算坚持使用它,建议其他/更好(?)类似的框架此时不会回答这个问题。
谢谢! -florin
答案 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深度路径(任何人?)。希望有所帮助。