jmeter - Jmeter - 将 JSON 响应数组传递给下一个 graphql http 请求
问题描述
我有 2 个 graphql http 请求如下。
第一个 http 请求的响应返回 json,如下所示:
{"data":{"customers":{"customerIds":["0e1c7b05-79c6-40c6-9144-7230a836fe04", "45677b05-79tt-56c6-9144-7230a836bbbb"]}}}
然后我创建了 json 提取器和 beanshell 以将客户 ID 保存在属性中
第二个 Http 请求然后使用上述 customerids 属性作为 graphql 请求正文的一部分
但我得到了 500 InternalServerError,因为下面的 customerids 列表中的引号没有被转义。我怎么能逃脱他们?
POST data:
{"query":"query getCustomerInfo {\n getCustomerInfo(customerIds: \"["0e1c7b05-79c6-40c6-9144-7230a836fe04"]\") {\n firstName\n lastName\n school\n }\n}"}
解决方案
-
使用此功能时,请确保您的脚本代码不直接在脚本代码中使用 JMeter 变量,因为缓存只会缓存第一个替换。而是使用脚本参数。
- 不要使用 Beanshell,因为 JMeter 3.1 你应该使用 JSR223 测试元素和Groovy 语言编写脚本
因此,用JSR223 PostProcessor替换您的 Beanshell 断言并使用以下代码:
props.put("customerIds",vars.get("customerIds").replaceAll("\"","\\\\\""));
这样您将获得以下customerIds
属性值:
[\"0e1c7b05-79c6-40c6-9144-7230a836fe04\",\"45677b05-79tt-56c6-9144-7230a836bbbb\"]
推荐阅读
- oracle - Powershell 不能使用数据库视图,除非重新编译
- javascript - 遍历 json 的 groupby 数组
- python - 如何访问 Python DataFrame 中的嵌套 JSON 对象
- html - 如何允许 0-12 之间的数字并且还有其他模式
- asp.net - 如何在 POST 正文中为 asp.net WebAPI POST 路由格式化 XML
- asp.net - 经典的 ASP 连接工作;.Net 失败。为什么?
- arrays - 每次单击按钮时如何获得不同的 UIImage 数组?
- javascript - 如何将整数数组增加 1
- python - 带有 MySQL db 的 Turbogears2 不更新多线程中的表
- php - 如何修复“警告:为 foreach() 提供的参数无效”