postman 每个环境的请求标头不同

zynd9foi  于 5个月前  发布在  Postman
关注(0)|答案(2)|浏览(75)

我正在使用postman的环境功能,但一个环境需要没有一个请求头。通常情况下,发送额外的不必要的请求头是无害的,但在我的独特情况下,它实际上打破了请求,导致端点返回401。
Postman Headers(点击链接;对不起,我还没有10个代表发布内联图像)
假设我有一个“Dev”环境和一个“Prod”环境。当我从环境中选择Dev时,我希望“need-me-for-dev-only”键和值。但是当我选择Prod时,我根本不希望在请求中发送该键/值。
这当然可以通过取消选中该标题项来实现。然而,这样我就必须切换环境,并记住根据需要选中或取消选中标题。
我尝试为变量设置一个空值(在本例中为Prod),但没有值的键会导致无效的头。

Accept: application/json
need-me-for-dev-only:

字符串
我试着不为Prod设置环境变量,但它确实发送了包含参数栏的变量名

Accept: application/json
need-me-for-dev-only: {{dev-environment-variable}}


在头部(捕获在提琴手)。
是否有可能不使用脚本来获得每个环境的请求头?如果没有,我将研究脚本来解决我的问题。

ltqd579y

ltqd579y1#

使用Postman可以实现这一点,使用预请求脚本和一个小技巧。
首先,确保你的开发环境有一个“Environment”变量,并将其设置为“dev”。
现在,对于您的请求,在Pre-request Script中添加如下内容:

let environment_name = postman.getEnvironmentVariable("Environment"); 

if(environment_name === "dev"){
    postman.setGlobalVariable("need-me-for-dev-only-key", "need-me-for-dev-only"); 
    postman.setGlobalVariable("need-me-for-dev-only-value", "your_value"); 
} else {
    postman.setGlobalVariable("need-me-for-dev-only-key", "something_else"); 
    postman.setGlobalVariable("need-me-for-dev-only-value", "something_else");
}

字符串
基本上,您可以根据环境设置头文件的键值对。如果是“dev”,我们将设置need-me-for-dev-only头文件。否则,我们将设置任意头文件,这些头文件最终将被您的API忽略。
现在,在请求的Headers部分,您可以添加以下内容:

Accept: application/json
{{need-me-for-dev-only-key}}: {{need-me-for-dev-only-value}}


就这样
希望你说得有道理。

wz1wpwve

wz1wpwve2#

我知道这是旧的,但我需要做类似的事情,并有一个替代品(感谢已经提供的解决方案)。当在本地测试时,我需要一个头,但在任何其他环境中不需要它。在每个环境中,我定义了2个变量;键和值。在除了本地之外的所有环境中,我将每个变量的值留空。在本地,我根据需要填充它们。然后在请求中,我从环境中引用键和值变量。这样它就在环境中,而不是集合或请求中的脚本。作为奖励,你可以设置一个预设,所以当你遇到一个没有它的请求时,点击预设。这在9.0.8版中有效。

相关问题