问题:
在服务接口调用中,出现这样的情况,入参明明没有传值,但是会被自动赋值为None的情况,接受参值的代码为下图,接收参数时已经用try except做了参值接收异常处理,为什么还会出现问题?
接收参值代码截图:
入参截图:
分析及解决:
- 与java代码原因有关:在java里是有对象的概念的,一个对象对应一个类,类就相当于是这个对象的框架,这个框架规定这个对象内部具有哪些字段,而在调用你的接口的时候,请求体的数据结构就对应我们代码里定义的这个类,也就是说,这时候这个请求体里的数据结构是统一且固定的,所以,不管这个字段值有没有定义,传给你的这个请求体里,对应的这个字段都是存在的,因为在后端的java代码里,数据结构就是这么被定义的。
- 修改思路:
request_data = api.payload
#添加.get方法避免后端入参时候请求体里面有参数名但是无参数值传入的情况,解决try except无法解决的异常
precision_score = request_data.get('precisionScore', 0.93)
similar_score = request_data.get('similarScore', 0.65)
以后接口调用方式可以考虑这样写。