【问题标题】:What is the best way to declare optional named path parameters in Apache Wink在 Apache Wink 中声明可选命名路径参数的最佳方法是什么
【发布时间】:2013-03-17 15:44:39
【问题描述】:
使用Apache Wink 在 REST 路径中定义可选命名参数的最佳方法是什么?
现在我正在使用这样的东西:
/items{sep: (?)}{id: (.*)}")
用于匹配请求,例如:
/items/123
/items/
/items
这样我就可以捕获一个干净的{id}。
另一种选择是:
/items{id: (/?/[^/]+?)}
但是{id} 将包含/ 字符并且需要清理。
我在我的框架(µ)Micro 中使用 Wink,我打算坚持使用它,推荐其他/更好(?)类似的框架目前不会回答这个问题。
谢谢!
-弗洛林
【问题讨论】:
标签:
java
rest
web
apache-wink
【解决方案1】:
这可能有点麻烦,不知道,也许这不是比你更好的解决方案(我不知道你的要求),但我是这样做的。我的资源类有一个注释'@Path("/db")',然后是每个支持的目录级别的连续方法,即,因为 REST 基于 URL,这些 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 深度路径(任何人?)。希望对您有所帮助。
【讨论】:
-
谢谢你,一郎。我真的很想看看 Wink 是否可以容纳可选的路径参数。我知道如何使用 Rails,here 是一个很好的例子,我认为我可以在 Wink 中使用类似的语法。我solved my problem 使用正则表达式,但我仍然希望有一种更清洁的方法。我暂时保留这个问题。再次感谢!