REST双端点场景下/api/带尾斜杠路由结果不符合预期问题咨询
结论
你的预期不符合主流Web框架的路由匹配规则,并不合理。
具体原因
- 第一个接口
/api/{id}的路径参数{id}默认为必填非空字段,要求/api/之后必须携带非空的ID值才会触发匹配。/api/路径尾斜杠后为空,没有合法的参数值,自然无法匹配该接口。 - 绝大多数服务端框架默认开启尾斜杠兼容匹配,
/api和/api/会被判定为同一路径,因此/api/会被路由到路径为/api的全量数据接口。
优化方案
如果要避免路由歧义,更推荐从接口定义层面解决:
- 调整全量数据接口路径为
/api/list,和按ID查询的/api/{id}做明确区分,从根源上消除匹配冲突。 - 若强制要求
/api/匹配按ID查询接口,可以修改路径参数的正则匹配规则,允许参数为空值,但该方式会导致两个接口路由优先级冲突,不建议使用。
内容的提问来源于stack exchange,提问作者Joyal Joseph
相关产品推荐
相关产品推荐

