我们有一个项目是使用微信小程序+springboot开发,在一个接口对接的时候,需要两个参数param1 和param2.不能同时为空。
问题是,单独传其中一个时,都有返回值。
postman调取接口都显示正常。
但是,两个参数同时放到程序中就没有返回值。
原因:使用查看日志法和排除法,日志上显示 api/test¶m1=null¶m2=1234 .仔细观察后发现是前端将抽象意义的<null>直接写为字符串“null”。post传值中表示该参数无值的正确写法应该是param1=¶m2=1234.
自己没有做好的地方:
因为没有仔细考虑入参的每种情况,加上偷懒,在后端入口将字符不能同时为空和字段类型正则校验放到一个if()校验中。伪代码:if(param1.isWrongType() && param2.isWrongType() ) {throws error},这就造成了只有两个校验都出错了,才会报错。自己写了那么多的校验,写出这种没脑子的代码,也是够了。但也付出了三个小时的个人时间去debug。想想都觉得好嗨啊。
给后来人的爱听不听的建议:
1病从口入,自己要有参数校验的习惯。不管前端小姐姐说她的接口写得有多splendid....
2看日志。就像跑步机买了就要用一样。日志打了你不看,有病啊。。。。