当我使用JAX-RS构建后端时出现了这个问题,但这确实可以应用于任何REST API。
JAX-RS如何处理由于参数路径变量而可能冲突的路径?假设你有
@POST
@Path('createBox/{boxName}')
foo()
@POST
@Path('createBox/small')
bar()
有人想使用路径参数small
来调用第一个端点。在这种情况下会发生什么?如果foo()
和bar()
具有不同的Parma(也许像@FormParam
),这将有助于区分吗?如果它们完全相同且没有参数怎么办?行为是不确定的吗?
答案 0 :(得分:1)
参考文献:带有JAX-RS 2.0的RESTful Java,第二版,作者是Bill Burke
"/customers/{id : .+}
<-getCustomer "/customers/{id : .+}/address"
<-getAddress 优先级规则
JAX-RS规范已经定义了用于匹配URI表达式的严格排序和优先级规则,并且基于最特定的match wins算法。
{id}
或{id : .+}
。这种排序是降序排列。{id}
您的示例:
bar()
之所以获胜,是因为按照规则1,它具有更多的文字字符