Quantcast
Channel: Postmanタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 470

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

$
0
0

この記事でやること

  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
constheaders=responseHeadersconstok=responseCode.code===200if(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](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/324456/4ace0e09-73bd-2f3a-40ad-bdce1bbf1f2e.png)<br>
.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で、引数に与えたプロパティ名の環境変数を取得するconstuid=pm.globals.get('uid')constaccess_token=pm.globals.get('access-token')constclient=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/ 


Viewing all articles
Browse latest Browse all 470

Trending Articles