【问题标题】:Problem with differentiation of pathparams路径参数的区分问题
【发布时间】:2011-07-31 01:15:18
【问题描述】:

Jax-rs @Path 变量有问题,我需要区分以下两个路径参数

  1. @Path({domain}/{id})
  2. @Path({domain}/{filename})

两者的示例网址:
1.http://localhost:8080/in.com/lrth09erdfgwe
2.http://localhost:8080/in.com/lrth09erdfgwe.xml

我认为我们需要在 pathparam 中使用正则表达式!我试过但没有得到它! 我在 Resteasy 与 spring-mvc 的集成中使用这个应用程序。 请就这个问题提出建议!

干杯!

【问题讨论】:

    标签: spring-mvc jax-rs resteasy


    【解决方案1】:

    您可以通过在参数中放置一个冒号来控制路径参数的匹配,然后是一个RE模式来匹配它,就像这样(其中RE是.+[.].+,只要匹配任何东西它在中间的某个地方至少有一个点):

    @Path("{domain}/{filename:.+[.].+}")
    

    我在我的一项服务中使用它(它使用 Apache CXF,但我相信这是所有 JAX-RS 实现的一个特性)。不过要小心!您可以将路径分隔符与此匹配,这会使事情变得非常混乱。 (我认为您可能会更好地更改 URI 的结构,以免产生歧义,例如,{domain}/id/{id}{domain}/files/{filename}。我敢打赌,您的客户会更快地理解。)

    【讨论】:

    • 另外,如果您正在处理文件名,请花一点时间确保您绝不允许 ..(或 Windows 上的一堆其他额外内容)。
    • 感谢您的建议!多纳尔。我试过了......但它会调用第一个服务。我使用了 {domain}/{filename}{param:.*},现在工作正常!
    猜你喜欢
    • 2015-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-25
    • 1970-01-01
    • 2015-12-10
    • 2016-04-16
    相关资源
    最近更新 更多