让我们承认,在泽西岛,我公开了两个查询:
如果用户执行/ hello / goodby,泽西岛是否保证将选择“/ hello / goodby”请求而不是“/ hello / {name}”且名称等于“goodby”?< / p>
我在我公开的服务中有这样的情况,似乎总是选择静态路径,但我在文档中寻找一种确认,我在这里看不到任何内容:https://jersey.github.io/documentation/latest/jaxrs-resources.html#d0e2271
答案 0 :(得分:1)
它不会出现在文档中。它将在JAX-RS Spec中。请查看“3.7.2请求匹配”部分,以及隐秘的mumbo jumbo中的某个地方,您将看到:
使用每个成员中的文字字符数作为主键对 E 进行排序
E 是迄今为止基于路径的合格方法。这意味着应优先考虑具有最多文字字符的路径。在你的情况下,这就是/hello/goodbye
总是获胜的原因。 goodbye
是字面字符,而{name}
有零字面字符,它是捕获组。
答案 1 :(得分:0)
是正确的。假设/ hello / goodby的优先级高于/ hello / {name},前提是两者均位于同一级别,如类或方法。
在以下条件下,所有匹配类均按降序排序-
就您而言,您只有文字字符和路径参数。
根据排序算法,/ hello / goodby将在/ hello / {name}之前,而/ hello / goodby是最佳匹配。