【发布时间】:2019-06-04 09:36:23
【问题描述】:
我正在尝试设置一个 Postman 预请求,以便在我向我的服务发出每个请求之前获取 OAuth 令牌。
我尝试遵循与此相关的各种示例和指南,每个示例和指南看起来都非常简单,但由于预请求脚本失败,我的脚本仍然存在问题。
恐怕这与以下事实有关,一个在 https 上,一个在 http 上。
这是我的预请求脚本
pm.expect(pm.environment.has('host')).to.be.true;
pm.expect(pm.environment.has('client_id')).to.be.true;
pm.expect(pm.environment.has('client_secret')).to.be.true;
pm.expect(pm.environment.has('username')).to.be.true;
pm.expect(pm.environment.has('password')).to.be.true;
var options = { method: 'POST',
url: 'http://' + pm.environment.get("host") + '/api/oauth/token',
headers:
{
Authorization: 'Basic '+btoa(pm.environment.get("client_id")+':'+pm.environment.get("client_secret")),
'Content-Type': 'application/x-www-form-urlencoded'
},
form:
{
grant_type: 'password',
username: pm.environment.get('username'),
password: pm.environment.get('password'),
}
};
pm.sendRequest(options, function(err, response) {
console.log(response.json())
});
这是我在 Postman 控制台中看到的内容
从图中可以看出,第一个请求失败,第二个请求生成 401 HTTP 响应。
如果我在预请求脚本之外运行与 http 上的“常规”邮递员请求相同的请求,一切正常,但在 https 上我收到错误,因为请求甚至没有发出
如何使我的预请求脚本正常工作?
【问题讨论】:
-
为什么不创建一个初始请求来检索 OAuth 令牌,将结果保存在一个变量中,然后在另一个实际执行操作的请求中使用该变量?使您免于一直使用令牌检索预请求脚本。
-
这基本上是我现在正在做的事情,但这需要我在每次令牌过期时更新变量,我希望避免这种情况
标签: postman postman-pre-request-script