Karate框架GET请求传null时参数key被省略,如何保留为q=空值形式?
问题根因
Karate框架的params关键字默认会自动过滤掉值为null的参数键,这就是你请求中q参数被直接移除的原因。
解决方案
方案1:修改请求表参数值(改造成本最低)
将请求表中q字段的(null)替换为空字符串'',Karate不会过滤值为空字符串的参数,会直接生成q=的形式:
* table requestTable | q | um | ie | status | | '' | 1 | utf | 400 | * call read('called.feature') requestTable
方案2:修改called.feature参数处理逻辑(兼容传null的场景)
如果你的业务场景确实需要传入null值、同时还要保留参数键,可以在参数赋值时自动把null转为空字符串,不需要修改调用方的入参:
* def requiredParams = { q: '#(q == null ? "" : q)', um: '#(um)', ie: '#(ie)'} url 'https://httpbin.org/anything' params requiredParams method GET
两种方案最终生成的请求地址都会符合你的预期:https://httpbin.org/anything?q=&um=1&ie=utf。
内容的提问来源于stack exchange,提问作者hungryhippos
相关产品推荐
相关产品推荐

