postman 将两个脚本化API请求级联在一起

fhity93d  于 2022-11-07  发布在  Postman
关注(0)|答案(1)|浏览(169)

我正尝试通过级联两个API请求并将第一个请求的响应(令牌)传递到授权标头字段中的另一个请求来检查端点可用性。虽然正在生成令牌,但第二个API没有在“令牌”变量中捕获正确的令牌。请告诉我脚本编写错误。是否有办法打印我的授权字段值?
脚本的输出如下所示:

{
  "error": "Invalid token."
}
401
AssertionError [ERR_ASSERTION]: Expected 200 response

编码:

var assert = require('assert');
var request = require('request');
var options2,token,info;
var options = {

  'method': 'POST',

  'url': '1',

  'headers': {

    'Content-Type': 'application/x-www-form-urlencoded'

  },

  form: {

    'client_id': '*',

    'client_secret': '**',

    'grant_type': 'client_credentials'

  }

};

request(options, function (error, response) {

  if (error) throw new Error(error);

     info = JSON.parse(response.body);
     console.log(info.access_token);
     token=info.access_token;

});

var request = require('request');

var options2 = {

  'method': 'GET',

  'url': '***',

  'headers': {

    'Content-Type': 'application/json',

    'Authorization': 'Bearer ' + token,
  }

};

request(options2, function (error, response) {

  if (error) throw new Error(error);
  console.log(response.body);
  console.log(response.statusCode);
  assert.ok(response.statusCode == 200, 'Expected 200 response'); 

});
6psbrbz9

6psbrbz91#

将调用request(options2, function (error, response)与options 2沿着移动到request 1的回调函数中。
由于request 1调用(token one)可能需要一些时间,所以request 2将在你还没有收到token调用的响应时被触发。你也可以使用Async/Await来使它更清晰,因为回调会使内容难以阅读。

相关问题