json - Postman 是否支持控制请求体的格式?
问题描述
我正在考虑使用 Postman 来自动化我的 REST API 测试,并且只使用了几天。到目前为止,我已经为我的初始集合创建了足够数量的请求。我也在我的请求前脚本、测试和请求正文中使用了全局变量、环境变量和集合变量。我希望控制请求中包含哪些属性,而无需制作同一请求的多个副本以排除某些属性。
例如,我有一个 JSON 请求正文,如下所示:
{
"Username": "{{Username}}",
"Password": "{{Password}}",
"AnotherProperty": ""
}
如果“AnotherProperty”为空或为空,我想从请求中完全删除该属性。我只希望“AnotherProperty”包含在请求中,如果它有一个值。因此,如果为 null 或为空,则请求应显示为:
{
"Username": "{{Username}}",
"Password": "{{Password}}"
}
我发现完成此操作的唯一方法是在集合中保存带有和不带有属性的单独请求,但是当有许多属性时,对请求中的每个属性执行此操作似乎并不有效。如果它们的值为空或空,是否可以控制请求中包含的属性?
解决方案
如果您有来自先前请求的 JSON 请求正文,请将其保存为环境变量。然后,您可以在主请求的预请求脚本中更新您计划发送的正文,或者在前一个请求的测试脚本中更新正文。
然后在主请求中,您可以raw
使用此语法发送正文{{variableName}}
。
预请求脚本示例:
// retrieve the environment variable
let potentialBody = JSON.parse(pm.environment.get("bodyToSend"));
// remove the property if empty
if (potentialBody.AnotherProperty === "") {
delete potentialBody.AnotherProperty;
}
// re-save the environment variable so it can be used in the primary request
pm.environment.set("bodyToSend", JSON.stringify(potentialBody));
正文示例(选择原始):
{{bodyToSend}}
推荐阅读
- javascript - Javascript unshift(),递归和制作数组
- python - 当我在 pandas 中使用 bar 类型 barh 时,y 轴中的值以降序显示,而不是从顶部升序显示
- java - 用键值映射嵌套对象 // Jackson
- bert-language-model - 如何为 BertMasked 语言模型提供合成输入嵌入
- python - 在追加到数组之前添加/更新值+键
- flutter - Flutter:每次运行 Flutter 应用程序时都会重置 Chrome 设置
- c - 如何将 C 结构反序列化为 Rust 结构
- angular - 如何将 Node_modules 文件夹添加到 github 存储库?
- java - 从数组中删除对象(Java)
- python - 在 Python 中对文本列进行排序