LayerX エンジニアブログ

LayerX の エンジニアブログです。

複数環境の開発にPostmanを活用する

この記事は LayerX Tech Advent Calendar 2022 の17日目の記事です。


LayerXのバクラク事業部でバクラクビジネスカードの開発マネージャーをしている @shnjtk です。

今日は普段の開発で僕がPostmanをどう使っているかについてご紹介したいと思います。

Postman

おそらくご存知の方が多いと思いますが、一応説明しておくとAPI開発用のプラットフォームです。 機能の一例として、APIクライアントとしてサーバにリクエストを送ったり、複数のAPIリクエストを規定の順番で実行したり、mock APIサーバを立てたりできます。

www.postman.com

非常に多機能でいろんな使い方ができるのですが、今回はごく基本的な使い方に絞ってお話します。

前提となる開発環境

機能の紹介を始める前に、今回の記事で前提としている開発環境についてご説明します。

書籍の情報を取得・管理するAPIがあり、本番(prod)・ステージング(stg)・ローカル(local)の3環境があるとします。

Books API 開発環境

環境ごとに異なる値を Environments と Variables で管理する

手始めに、書籍一覧を取得するための REST API (GET /books) に対するリクエストを作ります。 local環境向けに普通に request を作るとこんな感じになるかと思います。

local環境用request設定

stg環境、prd環境もそれぞれ設定するとこんな感じでしょうか。

stg環境用request設定

prod環境用request設定

このように設定した場合、例えば API エンドポイントが GET /books から GET /v1/books に変わったりすると、各環境の設定を変える必要があり面倒です。 できれば環境の数に関係なく設定は一つにしたい。そのためには EnvironmentsVariables を使います。

先に request 設定がどうなるかを先に示します。

Variablesを利用したrequest設定

環境ごとに異なる値を {{http_scheme}}{{api_host}} として variable にしています。variable のフォーマットは {{variable_name}} です。 この値を設定するのが Environments です。local・stg・prod環境の Environments 設定を以下に示します。

local環境用Environments設定

stg環境用Environments設定

prod環境用Environments設定

これで、environment を切り替えることで一つの request 設定を各環境で共通して利用することができます。environment の切り替えは画面右上にあるスイッチで切り替えることができます。

environment切り替え

Variables は URL 以外の箇所でも使えます。また、Type として default と secret があります。secret にすると入力した内容がマスクされます。 さらに、自分で定義した Variables 以外にも、事前に定義されている Variables (dynamic variables) も利用可能です。ここでは、secret variable として API token を定義し、さらにリクエストにランダムな UUID を X-Request-ID ヘッダの値として指定する例を示します。

secret variable設定

dynamic variable指定

{{$randomUUID}} と記述することで、リクエスト実行時に UUID を生成して指定したヘッダに設定してくれます。これ以外にも色々定義されており、詳細はこちらで確認できます。

Dynamic variables | Postman Learning Center

API token については、個別の request ごとに設定するのではなく、Collection 全体に設定すると便利です。

Collection全体のAuth設定

Cookieの設定

Cookie も設定できます。request の Cookies をクリックし、domain を追加して Cookie の値を保存します。

Cookieメニュー

Cookie設定画面

でもこれ、値が変わるたびに毎回設定するの面倒ですよね。Chrome の拡張機能である Postman Interceptor を使えば、ブラウザに保存した Cookie を自動で Postman に連携できます。 設定方法はこちらの記事で詳しく説明してくださっているので参照させていただきます。

tech.unifa-e.com

一点補足しておくと、Postman の UI が変わり、キャプチャアイコン (上記記事中でのアンテナアイコン)の位置がウィンドウ右下に移動してますのでご注意ください。

キャプチャアイコン

おわりに

今回、記事を書くにあたり改めて Postman のドキュメントを(ちゃんと)読んだのですが、まだまだ全然使いこなせていないことを実感させられました。 恥ずかしながら、少し前まで REST API 専用のツールだと思ってたのですが、いつの間にか GraphQL や gRPC に対応していたりと、すごいスピードで進化しているので、今後も継続的にキャッチアップして日々の開発の生産性を上げていきたいと思います。

最後まで読んでくださりどうもありがとうございました。