为什么我的请求路径中多了/ 还是能正确请求到我的接口??
2023-12-18 15:07 话猫 阅读(576) 评论(0) 编辑 收藏 举报问题:最近测试时发现postman输入了错误了请求路径也能正确路由到我后端的接口,这是为什么呢?
举例:请求路径 /rest/ceshi/testa/testb?id=1 是后端正确的url
当把路径中随意/处再增加多个/时,例如请求路径:/rest/ceshi///testa/testb?id=1,任然能正常请求到接口。
分析:
在一些Web框架中,路径中多余的斜杠(/)通常会被视为一个斜杠。这是因为在URL解析过程中,多个连续的斜杠被视为一个斜杠,以保持路径的一致性和可读性。
例如,对于以下两个URL:
/api/user
/api//user
这两个URL实际上被视为相同的路径/api/user
。因此,如果你的请求路径多加了一个斜杠,仍然可以映射到Controller的接口,这是正常行为。
在大多数Web框架中,路径匹配是基于模式匹配的,而不是严格的字符串匹配。因此,路径中的额外斜杠不会影响路由的匹配过程。
然而,具体的行为可能因不同的框架而异,因此这可能只是一种常见的行为。如果你使用的是特定的框架或工具,请查阅其文档以了解更多关于路径匹配的规则和行为。
springBoot处理:
Spring Boot 中的路径匹配是由 PathPatternParser
类负责的。在这个类中,有一个方法 parse
,它会将请求路径解析成一个 PathPattern
对象。在解析过程中,会将路径中间的多余 /
自动忽略,并将它们视为一个 /
。
具体来说,PathPatternParser
类会将请求路径按照 /
分隔成若干个部分,然后逐个处理这些部分。如果当前部分为空字符串或者为 /
,则忽略它;否则,将它添加到路径模式中。这样就能够处理路径中间的多余 /
,并将它们视为一个 /
。