现象
Fetch error
Internal Server Error /swagger/base/swagger.json
排查
- 按照以往的经历基本都是因为Conroller中的类中有非对外调用的函数,但是用了public修饰函数,会导致这个问题。这个问题通常通过查看git/svn中最近的提交记录,找出最近加的controller控制层的接口,把非对外的api接口私有化就可以。但是这次这个方案一直没找出问题。
- 把最近加的controller里面的所有api接口都注释掉,定位哪个controler是不是问题的类。确定跟它有关
- 保留其中一个post请求的接口,发现仍然问题。再注释掉,独立写一个get请求的api。正常,排查此controller大体封装没问题。
- 接着把刚才单独的post请求接口放到其他正常的controller。果然影响到了。
- 最后发现这个post请求里面的入参的model里面用到的类,在其他类中也有同名的,
- 修改api调用的MiOrderSelect的billData-->BillData。改成大写区别开。重新启动程序,swagger正常加载
总结
- 遇到问题先按照旧的经验,尝试排查
- 排查不出来,就要开始缩小范围,比如锁定一个分支、一个类、一个函数、一行代码……
- 做出假设,并想办法验证猜想
- 找出问题后,总结,更新过去已有的解决问题的思路。