【Postmanを使用】APIレスポンステストで詰まったところ　

#APIレスポンステストとは
自身が設定したHTTPのレスポンスの**ステータスコード**と実際のデータを含んだ**レスポンスボディ**が正しく返ってくるかテストします！
これらは、実際にAPI仕様書等見れば記載があると思いますので、確認してみてください:v:

※補足です

●**ステータスコードとは**

今回のAPIによって返されるステータスコードは以下になります。
APIの動きによってこちらのコードと照らし合わせる事でテストします。

- 200: OK - リクエストは成功し、レスポンスとともに要求に応じた情報が返される。
- 201: OK - POSTリクエストでデータが一つ追加される。
- 401: Unauthorized - 認証失敗。認証が必要である。
- 403: Forbidden - 禁止されている。リソースにアクセスすることを拒否された。
- 404: Not Found - 未検出。リソースが見つからなかった。
- 500: internal server error - インストールの失敗、互換性の問題、サーバーのアクセス権限の設定ミスなどが原因として上げられます。

●**レスポンスボディとは**

自身が設定したカラムのデータの内容です。
GETリクエストの場合は単にリクエストボディに要求したデータが入っているかをテストします。
POST、PUT、 DELETE　リクエストの際にはそれぞれ要求したデータ通りの動きをするかテストします。

#Postmanとは
APIの動作を確認するツールです:point_up:
それだけではなく認証、テスト、ドキュメント作成、バージョン管理など幅広く活用できる便利なツール&サービスになっています！

今回は、認証やテストしか触れていませんが、他の機能も今後触れていきたいですね:grin:
まずは下記URLでPostmanをダウンロードしてください！！
※この記事では基本的な使い方は紹介していないので、詳しい使い方は最後の行に参考URL記載しています！！
https://www.postman.com/
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/549714/53921dee-21ca-e900-0830-729b14df87ff.png)

#APIレスポンステストで詰まったところの例
ここからはAPIレスポンステストを具体例を挙げて紹介します！
割と基本的なところで詰まってしまったりしたんですけど、同じ様なところで詰まっている方いれば、参考にしてください:relaxed:

- **画像の挿入の仕方**
今回は、form_dataを用いて画像挿入しました:smiley:
もし、base64文字列を読み込む設定がアプリにあるなら画像をbase64のコードにデコードしてjson形式で読み込めます！

1. Bodyからform-dataを選択して、KEY入力欄のプルダウンから、Text → Fileに変更
2. VALUEで挿入したい画像を選択
![スクリーンショット 2020-07-15 11.46.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/549714/d9e62f10-715f-906c-64f5-cb73381ba822.png)

- **ストロングパラメーター設定時の入れ方**

例えば、あるコントローラーで下記の様に設定されている場合
![スクリーンショット 2020-07-15 11.50.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/549714/f30e9bbe-b4bd-8170-c3ad-64af4e7b4701.png)

下記の様に許可しているキーを指定してあげないと`param is missing or the value is empty`となってしまいます。
![スクリーンショット 2020-07-15 12.02.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/549714/4b6118a3-870b-9bc9-a86b-8491029ef93f.png)


- **関連付けしているカラムの入れ方**

またまた、下記の様なコントローラーの設定があったします。
![スクリーンショット 2020-07-15 21.12.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/549714/733e0913-9ece-21b7-f990-c64bfdb9b483.png)


見ての通り多対多の関連づけがされているものがあります。
こういう時Postmanではどの様に記載するのかといいますと下記の様になります。
![スクリーンショット 2020-07-15 21.17.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/549714/bbd3e070-5377-4d92-9ce3-4bf1cdde4619.png)


- **ログイン状態の維持**
アプリに`brfore_action: authenticate!`の様な認証設定があれば、ログイン状態でテストしたい時があります。そういう時は、下記の様にAutherizaitonのキーを押してTokenTypeを選択して、認証をすればログイン状態でテストできます:thumbsup:


1. まずはログインしたいユーザーでログインしてアクセストークンを取得します。
![スクリーンショット 2020-07-15 17.35.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/549714/d8f7d1dd-3e51-9a09-b8cc-5d380c1a3f15.png)

2. 取得したアクセストークンを下記の様に入力すれば、ログイン状態でAPIのテストが実施できます。
※今回はBarear Tokenを指定しています。アプリによって設定が違うと思いますので、確認してみてください！！
![スクリーンショット 2020-07-15 17.35.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/549714/9c93f1ee-f91b-29eb-4616-26402a34b532.png)

#まとめ

Postmanをしようして詰まったところをまとめてみました！
これから同じ様な内容で詰まる方の参考になれれば嬉しいです:relaxed:


#参考URL
- 今回の記事ではPostmanの使い方を詳しく紹介していないので下記に簡単に紹介されています！
 
 https://blog.linkbal.co.jp/4447/#:~:text=Postman%E3%81%AF%E3%80%81Web%20API%E3%81%AE,%E3%81%AA%E3%81%A9%E3%81%AE%E6%A9%9F%E8%83%BD%E3%81%8C%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82