Karate框架中构造含日期范围的GET请求参数方法咨询
解决Karate框架中构造
filters[...]格式GET查询参数的问题 直接把filters[start_date]作为JSON对象的键是错误写法,Karate不会识别这种嵌套结构,只会将其当作普通字符串键,自然生成不了预期的URL格式。下面是两种可行的正确构造方式:
方式一:使用嵌套对象自动序列化
利用Karate的内置序列化能力,将filters定义为嵌套对象,同时启用查询参数编码配置,Karate会自动把嵌套结构转为filters[xxx]的格式:
* configure encodeQueryParams = true * def query = { id: 60, filters: { start_date: 'Fri Nov 18 2022 10:14:59 GMT-0300', end_date: 'Sat Nov 19 2022 23:59:59 GMT-0300' } } * url 'https://urlbase/index' * param query = query * method get
注意:这里不需要手动对空格做%20编码,Karate会自动处理URL编码。如果已经手动编码了值,记得把encodeQueryParams设为false,避免二次编码。
方式二:逐个指定带括号的参数键名
如果需要更直接地控制参数键名,可以通过param指令逐个定义,把带括号的键名用引号包裹:
* url 'https://urlbase/index' * param id = 60 * param 'filters[start_date]' = 'Fri Nov 18 2022 10:14:59 GMT-0300' * param 'filters[end_date]' = 'Sat Nov 19 2022 23:59:59 GMT-0300' * method get
这种方式会完全保留你指定的键名格式,同样Karate会自动处理值的URL编码。
内容的提问来源于stack exchange,提问作者apark
相关产品推荐
相关产品推荐

