Postman を初めて触ろうとしているあなたに

この記事は [OPENLOGI Advent Calendar 2021](https://qiita.com/advent-calendar/2021/openlogi) の14日目です。

# はじめに
私事ですが、2020年の夏に [株式会社オープンロジ](https://service.openlogi.com/) のQAエンジニアとして入社し１年半が経とうとしています。未経験からの入社でもあり、本記事で紹介する HTTPクライアントツール の一つである Postman は弊社のAPIテストを行う際に初めて触りました。直感的に扱いやすいツールだとは思いますが、Postman【初級編】として記事に残し、自分と同じような境遇の人のお役に立てればと思います。

# Postman 実行環境
Version 9.3.1

# インストール方法
それぞれ（Mac, Linux, Windows）アプリがあるので、[ここ](https://www.postman.com/downloads) からダウンロードして使用しています。

![スクリーンショット 2021-12-14 22.25.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/477960/4d40047d-56a3-262b-4384-0a77d9b59664.png)

[Web版](https://www.postman.com)もありますが、個人的にはアプリ版の方が使いやすかったです。以後、説明にはアプリ版の方を使用しています。


# 基本的な使い方
上部バーの Workspace から、とりあえず My Workspace を選択することでAPIをテストを実行できる画面に遷移します。
![スクリーンショット 2021-12-14 22.41.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/477960/004d8982-0ae3-d45f-1e50-bafedc3bf909.png)
↓
![スクリーンショット 2021-12-14 22.47.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/477960/d383c3f6-9dfe-4f73-2c74-2efc7d3a8271.png)

## リクエスト送信
### HTTPメソッドの指定
ドロップダウンからHTTPメソッドを指定します。
![スクリーンショット 2021-12-14 23.04.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/477960/48cbf7fe-e545-0812-5067-06335b773301.png)
たくさんありますが、GET / POST / PUT / DELETE しか使ったことないです。
ひとまず GET にしてみます。

### リクエストURL の記述
APIのURLを入力します。弊社のAPIドキュメントを参考にすると以下のようになります。
後述しますが、変数を指定することもできて、ホスト部分を変数化することで環境を切り替えたい時に便利です。

![スクリーンショット 2021-12-15 1.07.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/477960/961163c5-fac5-61cd-cdb9-a58d74fe6364.png)

```
Http://localhost:8000/api/items/OM475
```
![スクリーンショット 2021-12-14 23.16.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/477960/77c08096-c428-144a-12d0-5e756a1eec36.png)

### Headers タブについて
Authorization や content-type などのリクエストヘッダーを指定します。
これも弊社のAPIドキュメントを参考に、APIのバージョン指定と認証情報を以下のように設定しました。
![スクリーンショット 2021-12-15 0.43.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/477960/74a5d6b4-7671-3fa7-095b-652a51d9fdf5.png)

### Authorization タブについて
上記で Headers に認証情報を入れ込んでみましたが、こちらでも設定可能です。
![スクリーンショット 2021-12-15 0.54.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/477960/1ebc224d-9bcc-c94d-0736-4fb4463c6bb4.png)

### Params タブについて
Key-Value の形で設定することにより、自動でのURL生成が可能になります。
![スクリーンショット 2021-12-15 1.01.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/477960/0c725b3b-1654-1d07-61da-8cf82e2c505d.png)

### Body タブについて
HTTPメソッドに POST や PUT を使用する場合はリクエストボディを定義します。
![スクリーンショット 2021-12-15 1.27.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/477960/2e3a9ae3-eb4d-62ca-f910-7ae443aaadec.png)


### 実行
成功すると、下部ウィンドウに Status:200 でレスポンスが表示されます。
![スクリーンショット 2021-12-15 1.12.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/477960/40148e02-98de-9778-12ea-59c127f1736e.png)

ちなみに、認証情報に誤りがあった場合は以下のように401エラーになりました。
![スクリーンショット 2021-12-15 1.17.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/477960/dfec6c63-d837-733b-20a2-6b06b5395e4d.png)

## 環境変数の設定
QA として API のテストをしていると、環境や認証情報が変わったりして、個々のリクエストの値を変更することが煩わしくなってきます。
そんな時は環境変数の設定をすれば2秒で解決します。（個人差あり）

1. 右上の目のアイコンをクリック
![スクリーンショット 2021-12-15 2.10.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/477960/6f723640-0c63-5cf7-d164-67fa8bed6ce4.png)

1. Add をクリックすると設定画面が出てくる
![スクリーンショット 2021-12-15 2.11.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/477960/8b945983-3f2d-13bc-f401-27d1315cb145.png)
![スクリーンショット 2021-12-15 2.12.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/477960/e1d67cc1-b4d9-e605-b823-ef0974ab077c.png)

1. 環境変数をセット
VARIABLE に変数名、CURRENT VALUE に変数をセットする。(※)
今回はローカル環境用に、`HostName`という変数名で `Http://localhost:8000` にしてみる。
![スクリーンショット 2021-12-15 2.21.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/477960/fe9e1832-b766-8187-2d48-95b135dd1591.png)

1. 使用方法
変数名を {{ }} で囲み、右上から使用したい環境を選択します。
![スクリーンショット 2021-12-15 2.30.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/477960/282596da-a5c8-7315-403c-02dfe8d070ef.png)

(※)
INITIAL VALUE と CURRENT VALUE があるが、INITIAL の方は、Postmanサーバ経由でその環境にアクセスできる共同作業者と共有されるとのことである。今のところ個人でやっているので CURRENT で設定しています。
![スクリーンショット 2021-12-15 2.26.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/477960/16f52a8c-3c82-9421-6674-7bf508ceca84.png)

https://learning.postman.com/docs/sending-requests/managing-environments/

# おわりに
今回は、普段APIのテストで利用している Postman の使い方を紹介しました。APIクライアントツールを探している方や、当時の自分のようなAPIテスト初心者の力になることができれば幸いです。
また、弊社のQAチームではテスト自動化の真っ最中であり、APIに関しても自動化を目指しているところです。QAエンジニアという職種に恥じぬように、より技術力を身につけなければと心に抱いた12月の夜でありました。