web-dev-qa-db-ja.com

Postmanで事前要求スクリプトを使用して、別の要求を実行する方法

私は郵便配達員でワンクリックで認証されたリクエストを送信しようとしています。

そのため、「Oauth」という名前のリクエストと トークンを保存するためにテストを使用しています がローカル変数にあります。

var jsonData = JSON.parse(responseBody);
postman.setEnvironmentVariable("token", jsonData.access_token);

私が今やろうとしているのは、ベアラートークンを必要とする他のすべてのリクエストに対してOauthリクエストを(事前リクエストスクリプトから)自動的に実行することです).

アクセストークンを取得し、1回の郵便配達員ボタンクリックで認証済みリクエストを送信する方法はありますか?

26
Lasharela

注:現在、isが事前要求スクリプトでこれを行う方法です。 その他の回答 を参照してください。後世のためにこの回答を続けますが、誰もが知っているように:)

事前要求スクリプトでこれを行う方法はまだないと思いますが、変数と[テスト]タブを使用すると、数回クリックするだけで取得できます。 Postmanブログに詳しい説明があります 、しかしその要点は次のとおりです。

  1. 通常のように認証リクエストを設定します。
  2. そのリクエストのTestsセクションで、そのリクエストの結果を変数に保存します。おそらく次のようなものです。

    var data = JSON.parse(responseBody);
    postman.setEnvironmentVariable("token", data.token);
    
  3. 認証要求を実行します-tokenがその環境に設定されていることがわかります(右上の目の形のアイコンをクリックします)。

  4. 以前にベアラートークンに貼り付けていた場所で{{token}}を使用するようにデータリクエストを設定します。
  5. データ要求を実行します-これで、適切に認証されるはずです。

トークンを更新するには、認証要求を再実行するだけです。

17
Hannele

少し遅れましたが、この投稿に出くわした人のために、ISからPre-request Script セクション。いくつかの例をここで見つけることができます: https://Gist.github.com/madebysid/b57985b0649d3407a7aa9de1bd32799

15
KBusc

KBuscが言及し、それらの例からヒントを得たように、次のような事前要求スクリプトを設定することで目標を達成できます。

pm.sendRequest({
    url: pm.environment.get("token_url"),
    method: 'GET',
    header: {
        'Authorization': 'Basic xxxxxxxxxx==',
    }
}, function (err, res) {
    pm.environment.set("access_token", res.json().token);
});

次に、単に{{access_token}}他の環境変数として。

9
Gera Zenobi

Pre-request Scriptセクションから別のリクエストを送信することはできませんが、実際には、リクエストをチェーンして次々に実行することが可能です。

リクエストをコレクションに収集し、 実行 with Collection Runner

リクエストの結果を表示するには、 その他の回答 に従ってください。

4
Piotr Dawidiuk

各Postman要求の前に実行される事前要求スクリプトをコレクションに追加できます。たとえば、次を使用してApigeeからアクセストークンを返します

const echoPostRequest = {
  url: client_credentials_url,
  method: 'POST',
  header: 
      'Authorization: Basic *Basic Authentication string*'

};

var getToken = true;

if (!pm.environment.get('token'))

{
    console.log('Token  missing')

}
else 
{

    console.log('Token all good');
}

if (getToken === true) {
    pm.sendRequest(echoPostRequest, function (err, res) {
    console.log(err ? err : res.json());
        if (err === null) {
            console.log('Saving the token');
            console.log(res);
            var responseJson = res.json();
            console.log(responseJson.access_token);
            pm.environment.set('token', responseJson.access_token)


        }
    });
}
1
Michael Ormrod