【问题标题】: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 使用正则表达式,但我仍然希望有一种更清洁的方法。我暂时保留这个问题。再次感谢!
    猜你喜欢
    • 1970-01-01
    • 2013-06-13
    • 2012-10-14
    • 1970-01-01
    • 2021-06-10
    • 2016-05-19
    • 1970-01-01
    • 2010-11-06
    • 1970-01-01
    相关资源
    最近更新 更多