调用Java脚本代码,返回“:”的ASCII编码,以分隔键和返回对象的值

时间:2019-03-26 05:14:51

标签: karate

我使用空手道发出api请求,其中api请求参数之一采用过滤条件(这是一个Java脚本对象)。

我使用文字表示法创建一个Java脚本对象,如下所示。这段代码在单独的filter.js文件中。

function() {

var params = {
    val1:[],
    val2:[]
};
return params;

}

现在我在空手道场景中调用上述.js文件,如下所示:

 Scenario: Test
Given path 'filtertest/'
* param filter = call read('classpath:feature/common/filter/filter.js')
When method get

运行以上命令,当我检查日志时,api抛出错误的请求错误。我查看了请求url,在那我可以看到js文件中为对象键分配值的':'被替换为%3A,我认为这是':'的ASCII编码。 (参数值如下)

  

?filter =%7B%22val1%22%3A%5B%5D%2C%22val2%22%3A%5B%5D

我想要的是':',它来自.js调用,因为服务器端希望将过滤器参数值作为键值对。

有没有办法实现这一目标?

1 个答案:

答案 0 :(得分:0)

如果您的服务器无法解码已编码的:,则是一个错误:https://www.w3schools.com/tags/ref_urlencode.asp

如果您确实需要此方法-解决方法是使用url关键字并手动进行构建,则pathparam将始终进行编码。 >

Given url baseUrl + '/filtertest?filter=foo:bar'