java REST路径参数与资源路径冲突?
这个问题是在我使用JAX-RS构建后端时提出的,但这确实适用于任何RESTAPI
JAX-RS如何处理由于参数路径变量而可能发生冲突的路径?假设你有
@POST
@Path('createBox/{boxName}')
foo()
@POST
@Path('createBox/small')
bar()
有人想用路径参数small
调用第一个端点。在这种情况下会发生什么?如果foo()
和bar()
有不同的parmas(可能像@FormParam
),这有助于区分吗?如果他们完全一样,没有争论呢?这种行为是非确定性的吗
# 1 楼答案
参考资料:带JAX-RS 2.0的RESTful Java,第二版
"/customers/{id : .+}
<;getCustomer"/customers/{id : .+}/address"
<;获取地址优先规则
JAX-RS规范为匹配URI表达式定义了严格的排序和优先规则,并基于最具体的匹配wins算法
{id}
或{id : .+}
。这种排序是按降序排列的李>{id}
您的示例:
bar()
获胜是因为根据规则1,它有更多的文字字符