java - Spark-Java:不同的路径字符串映射到相同的 Get 方法
问题描述
我遇到了两个不同的路径映射到同一个资源的问题。请让我知道为什么以下 2 条路径映射到同一路径:
get("/test/:idtest/:idsimple", (request, response) -> "");
get("/test/all/:idtest", (request, response) -> "");
以下两个调用映射到相同的:
curl -X GET -i http://localhost:4567/test/2/3
curl -X GET -i http://localhost:4567/test/all/5
谢谢
解决方案
将这两个请求映射到第一个路由的原因是您定义它们的顺序。Spark Java 文档在这里提到:
路由按照定义的顺序进行匹配。调用与请求匹配的第一个路由。
当您调用http://localhost:4567/test/2/3
Java Spark 时,会首先尝试将其与您定义的第一个路由匹配"/test/:idtest/:idsimple"
:
- 该变量
idtest
将匹配到2
- 该变量
idsimple
将匹配到3
当您调用http://localhost:4567/test/all/5
Java Spark 时,会首先尝试将其与您再次定义的第一个路由匹配:
- 该变量
idtest
将匹配到all
- 该变量
idsimple
将匹配到5
所以它们都匹配,因此映射到这条路线。
如果您更改路由定义的顺序,"/test/all/:idtest"
则将是第一个匹配的路径,然后调用http://localhost:4567/test/all/5
将映射到正确的路由,而调用http://localhost:4567/test/2/3
将失败第一个并映射到第二个。
推荐阅读
- c++ - 项目坐标更改时如何更新 QGraphicsScene
- c++ - 在 dev-c++ 中将数组放在一起
- c# - 在 C# / ASP.NET 中异步检查 Internet
- javascript - 如何根据与其他表的多对多关系过滤掉元素?
- r - 如何在 R 中找到回报率。我按月按数据分组
- php - 致命错误:未捕获的错误:无法将 stdClass 类型的对象用作数组
- javascript - 当 Redux 状态改变时组件不会重新渲染 - React
- python - 如何在 python 中与 Github API 交互(没有 api 包装器)?
- xamarin - 使用循环将视图添加到 RelativeLayout
- angular - 如何以编程方式滚动到滚动视口的末尾?