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

Java 在ApacheWink中声明可选命名路径参数的最佳方法是什么,java,rest,web,apache-wink,Java,Rest,Web,Apache Wink,使用在REST路径中定义可选命名参数的最佳方法是什么 现在我用的是这样的东西: /items{sep: (?)}{id: (.*)}") 用于匹配请求,例如: /items/123 /items/ /items 这样我就可以捕获一个干净的{id} 另一种选择是: /items{id: (/?/[^/]+?)} 但是{id}将包含/字符,并且需要进行清理 我在我的框架中使用Wink,我计划继续使用它,推荐其他/更好的(?)类似框架目前无法回答这个问题 谢谢大家! -florin这可能有点麻烦

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

现在我用的是这样的东西:

/items{sep: (?)}{id: (.*)}")
用于匹配请求,例如:

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

另一种选择是:

/items{id: (/?/[^/]+?)}
但是
{id}
将包含
/
字符,并且需要进行清理

我在我的框架中使用Wink,我计划继续使用它,推荐其他/更好的(?)类似框架目前无法回答这个问题

谢谢大家!

-florin

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

@Path("{id}")
@GET
public Response getJson( @PathParam("id") String id )
{  
    String path = id;
    // TODO
}
处理“数据库/项目”,以及

处理“db/items/123”和

处理“db/items/123/456”


但您可以看到,在较长的路径上,这会很快变得很麻烦,而且我还没有弄清楚如何处理n深度路径(有人吗?)。希望能有所帮助。

谢谢你,一郎。我真的很想看看Wink是否可以容纳可选的路径参数。我知道如何使用Rails,这是一个很好的例子,我想我可以在Wink中使用类似的语法。我正在使用regexp,尽管我仍然希望有一种更干净的方法。我暂时不回答这个问题。再次感谢!
@Path("{id1}/{id2}")
@GET
public Response getJson( 
        @PathParam("id1") String id,
        @PathParam("id2") String id2 )
{
    String path = id1 + '/' + id2;
    // TODO
}
@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
}