Mar*_*rio 5 javascript json jsonpath node.js postman
我的需要: 我想在我的 JSON 响应中构建一个包含过滤器的路径。
//Simple path - OK
response.Node1.Node2.Node3.Node4
//Path with list - OK
response.Node1.Node2.Node3[1].Node4
//Path with condition (filter) - NOK
response.Node1.Node2[?(@.Node3 == 'value')].Node3bis
Run Code Online (Sandbox Code Playgroud)
Postman 不理解 [?(@.Node3 == 'value')] 语法,因为 jsonPath 本身不支持。
因此,我试图在 Postman 中导入 jsonPath js 库,我发现了两个:
研究
我已经阅读了这篇文章,没有一个答案满足我的需求。
Postman js 代码仅限于沙箱。
Postman 将库限制在此列表中。
有一个技巧(检查提示 #5)将 js 代码添加为全局变量,并在请求中调用它。但是它不适用于 jsonPath 项目,因为它不仅仅是一个简单的功能,而是一个完整的项目。我尝试了很多不同的方法,但仍然无法从我的 Postman 测试中调用 jsonPath 函数。
我还阅读了相关的邮递员问题。
从GitHub社区,这个问题有利于被关闭这一个。哪一个已经被关闭了,赞成这一点。自 2015 年 6 月以来,在没有明确答案的情况下打开(只有上面提到的小技巧)。
未知域
即使我阅读了它们的全球使用情况,我也对 NodeJs / NPM / Newman 的技术一无所知。
但是我读到邮递员支持 NodeJs,允许生成 NodeJs 代码片段,我看到可以使用 NodeJs 导入 jsonPath 库。
也许可以从那里做一些事情,但我没有专业知识来实现它。
题:
有谁知道如何让它完全工作?
我的意思是,找到一种使用 jsonPath 表达式的方法,感谢 jsonPath js 库,在 postman 中...请帮忙。
欢迎任何邮递员收藏使其工作:)。
关于最初的问题,目前不支持导入外部js代码(除了上面透露的全局变量技巧),但它目前正在由Postman团队开发。如果使用金丝雀版本,您可以在正式交付之前获得它。
关于我的需求,我实际上找到了一种使用Cheerio构建有条件路径的方法。注意:responseBody 是 XML 格式,因此我加载了 Cheerio。
var $ = cheerio.load(responseBody, {
ignoreWhitespace: true,
xmlMode: true
});
//Will show in the console the value of NODE3bis corresponding to a NODE3='value'
console.log("cheerio xpath with condition: " +
$('NODE1 > NODE2 > NODE3:contains("value")')
.parent().find('NODE3bis').text());
//Where NODE3 and NODE3bis are sibling.
//Another way to write it using .has() function, which allows to avoid the use of .parent() afterward:
console.log("cheerio xpath with condition: " +
$('NODE1 > NODE2').has('NODE3:contains("value")').find('NODE3bis').text());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1693 次 |
| 最近记录: |