25
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Postmanでログイン状態を維持する

Last updated at Posted at 2020-03-14

この記事でやること

  1. アクセストークンをもらうためのAPIをPostmanで叩き、帰ってきたアクセストークンをPostmanの環境変数を利用して永続的に保存する。

  2. 保存した値を、認証が必要なリクエストを送る前に動的にヘッダーにセットする。

なにが嬉しいか

Postman1がアクセストークンを保持できるので、ブラウザでいういわゆる「ログイン状態」を維持することができる。

手順

1. ログインAPI(アクセストークンをもらうためのAPI)のタブを開く

2. Testsの項目で、レスポンスヘッダーの値を受け取る。

Testsという項目は、APIのレスポンスが帰ってきたあとの処理をNode.jsベースでランタイムに書けるところ。一言で言えば、JavaScriptが書ける。

ヘッダーの値をPostmanの環境変数にセットする処理の例が以下。

スクリーンショット 2020-03-14 19.30.10.png

tests.js
const headers = responseHeaders
const ok = responseCode.code === 200

if (ok) {
    pm.globals.set('uid', headers.uid)
    pm.globals.set('client', headers.client)
    pm.globals.set('access-token', headers['access-token'])
}

このコードは、APIから帰ってきたレスポンスのヘッダーを取得し、それをPostman上の環境変数にセットするための記述です。

素直な処理なのでわかりやすいとは思いますが、以下だけ、PostmanSandboxAPI2を利用している特殊な処理なので注意です。

pm.globals.set('uid', headers.uid)

これは一言でいえば、「Postmanの環境変数として、uidというプロパティ名で、レスポンスヘッダーのuidの値をセットします」ということです。

認証のために「uid」「client」「access-token」の三種類を利用しているアプリケーションの場合は、以下のように三種類に対する処理が必要となります。

pm.globals.set('uid', headers.uid)
pm.globals.set('client', headers.client)
pm.globals.set('access-token', headers['access-token'])

3. Testsに記述後、APIをPostmanで叩く

リクエストボディに、ログインのための認証情報を入力して、Postする。

スクリーンショット 2020-03-14 19.32.32スクリーンショット 2020-03-14 19.34.47.png .png

4. レスポンスを受け取ったあと、環境変数としてアクセストークン等が保存されているかチェック

画面右上の歯車(画像でいう右側)をクリックして、
スクリーンショット 2020-03-14 19.34.47.png

「Globals」に値が保存されていたらOK。

スクリーンショット 2020-03-14 19.33.47.png

5. Postmanの環境変数を、リクエスト前に送る

先程は、Testsという項目を利用して、レスポンス後にJavaScriptで処理を走らせたが、次は「Pre-request Scripts」という項目を利用し、リクエスト前にJavaScriptを走らせるよう記述する。

Pre-request Scriptsは、コレクション単位で設定できるので、コレクションの編集をしよう。コレクションというのは、複数のリクエストタブを一つにグルーピングしているものである。

まずは、「Edit」でコレクションの編集画面に移動する。

スクリーンショット 2020-03-14 19.19.29.png

その後、Pre-request Scriptsのタブに移動し、リクエスト前に行ってほしい必要な処理を記述する。

スクリーンショット 2020-03-14 19.19.59.png

// pm.globals.getで、引数に与えたプロパティ名の環境変数を取得する
const uid = pm.globals.get('uid')
const access_token = pm.globals.get('access-token')
const client = pm.globals.get('client')

// pm.request.headers.add で、リクエストのヘッダーに、任意のプロパティ名と値をセットできる。
pm.request.headers.add( {key: 'uid', value: uid })
pm.request.headers.add( {key: 'access-token', value: access_token })
pm.request.headers.add( {key: 'client', value: client })

これで、実質的にログイン状態を維持したまま、Postmanを利用することが出来る。

  1. Postmanとは? → API開発のさいに便利なデスクトップアプリケーション。詳しくは公式へ: https://www.postman.com/

  2. PostmanSandboxAPIとは? → Postman上で利用できるAPI。 詳しくは公式リファレンスへ。https://learning.postman.com/docs/postman/scripts/postman-sandbox-api-reference/

25
18
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
25
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?