记一则花了大半天的异常:
起因:一个普通的请求,通过postman调用,但就是进不去程序内部
供应商原代码如下:

虽然这个写法怪怪的,个人也有所怀疑,但原代码通过前端浏览器就是可以正常执行。
进行postman执行就报 "请求错误:Request method 'POST' not supported"
再后来,发现 postman中 url误写 http://localhost:9009/production/updateWeightDetai
看到没 Detail 中的 l 漏了,但奇怪就是没报404。为啥?
突然知道为啥了。 同个类里有个相同路径的Get请求http://localhost:9009/production/{id}
坑死啊!!!
这个就是路径变量贪婪匹配,Spring MVC 路由匹配的经典坑!
Spring 路由匹配优先级补充(很多人不知道)
Spring 的匹配规则:
- 精确固定路径 > 路径变量 > 通配符
- 但是如果没有更精确的固定路径命中,
/{xxx}会吃掉几乎所有同前缀的请求{id}是占位符,不限定内容,字母、数字都能接,容错极强,很容易 “捡漏”。
解决方法么,自己网上找吧
转载自 CSDN-专业IT技术社区
原文链接:https://blog.csdn.net/zzwpublic/article/details/170443938



