RareJob Tech Blog

レアジョブテクノロジーズのエンジニア・デザイナーによる技術ブログです

今更わかるPostman〜便利なAPI開発補助ツール〜

みなさん、今日も元気にAPI開発していますか?
最近社内勉強会で改めてPostmanについて説明したら
意外と機能を知らない人が多かったので
API開発で色々便利な機能満載のPostmanを
API Clientとしての機能をメインに紹介しようと思います。

Postman is 何?

Postman, Inc.が開発しているAPI開発コラボレーションツールです。
API Client機能やチーム開発の共有、MockServerの作成機能、自動テスト機能などがあります。
弊社ではローカルでの開発の振る舞いテストで主に使用しています。

インストール方法

mac(Homebrew-cask)

Homebrew-caskでインストール可能です。

$ brew cask install postman

mac & windows

www.getpostman.com

こちらのリンク先のDownload the Appをクリックしてダウンロードしてインストールしてください。

新規設定

f:id:dedekopon:20191213160428p:plain 画面左上の[New]をクリックして新規の設定を行う

f:id:dedekopon:20191213161311p:plain BUILDING BLOCKS

Request:新規でリクエストを作成する。
Collection:リクエストのフォルダを作成する。
Environment:Postman上の環境変数の設定を行う。

ADVANCED(ログイン後の機能)

API Documentation:ドキュメントを作成する。ログイン後のページで共有される。 Mock Server:リクエストのモックを作成する。
Monitor:自動テストの設定、パフォーマンスチェックを行う。

メイン画面

f:id:dedekopon:20191213163133p:plainAPI
APIの説明
APIのメソッド・URL
④リクエストの設定
⑤リクエストの設定詳細項目
環境変数設定
APIのリクエスト例
⑧クッキーの設定・別媒体でのリクエストサンプル

リクエストの設定

Params

APIのqueryパラメータとpathパラメータを設定する。
f:id:dedekopon:20191213164104p:plain pathパラメータはURL中に:param_nameで設定、queryパラメータは通常のGETパラメータなので?param_name=valueの形で定義する。
例えばhttp://example.com/test/:test_id/?param=testの場合は図のようになる。

Authorization

APIを使用する際に認証が必要な場合などに設定する。

Headers

リクエストのヘッダーの設定を行う。Authorizationにauthorizeヘッダーを設定している場合はこちらには不要です。

Body

リクエストのボディの設定を行う。

pre-request script & tests

f:id:dedekopon:20191213164914p:plain Intro to scripts | Postman Learning Center
リクエスト送信時に前処理、後処理を簡易的ですが実装できます。
以下にちょっとした一例を書いておきます。

  • 環境変数から保持しているトークンの有効期限を確認して、エラーを出すpre-request script
// 環境変数から値を取得する
var ttl = pm.environment.get("TOKEN_TTL")
var now = Date.now()
if (now > ttl) {
    // throw new Errorされた場合、処理はそこで止まります
    throw new Error("No available token set. Please set environment TOKEN and TOKEN_TTL")
}
var refresh = false
// レスポンスのステータスコードが200かチェックする
pm.test("Status code is 200", function () {
    pm.response.to.have.status(200);
    refresh = true
});

if (refresh) {
    // 環境変数のトークンを更新する
    console.log('token refresh')
    pm.environment.set("TOKEN", pm.response.json().token);
    pm.environment.set("TOKEN_TTL", Date.now() + (3600 * 1000));    
}

環境変数設定

f:id:dedekopon:20191213170830p:plain 環境変数の切り替えを行うことができます。
こちらで設定した値はpre-request script,tests

pm.environment.get("VALUE_NAME") // 取得
pm.environment.set("VALUE_NAME", "value") // 更新

のような形で操作できる他
{{URL}}/test/のようにURLやパラメータ中に{{VALUE_NAME}}の形で埋め込むことができます。

APIのリクエスト例

f:id:dedekopon:20191213171745p:plain APIのリクエスト例を保存することができ、簡単に呼び出すことができます。

別媒体でのリクエストサンプル

f:id:dedekopon:20191213172118p:plain CodeをクリックすることでPHP,Ruby,Goでの実装サンプルが確認することができます。
別の環境で確認するときなどにとても重宝します。

エクスポート

これらの設定は全てインポート・エクスポートすることが可能です。
弊社ではAPIのサンプルの共有用リポジトリを用意し、Git上で管理しています。

まとめ

  • Postmanは優秀なAPI開発補助ツール
  • ただリクエストを送るだけだと勿体無いので色々設定して使おう
  • ログインして使う場合はさらに便利機能が色々使えるよ