Postman 練習環境を構築し、ハンズオンコンテンツを120%吸収する

## はじめに
日々の活動、ご苦労様です!!
先日、__Postmanオンラインワークショップ - APIテストスクリプト入門__ に参加しました！
説明が丁寧で理解しやすかったのですが、ハンズオンの時間内で扱いきれないインプットもあったので、気軽に試せる環境を欲しいと思い構築・公開してみました。

今回はその構築手順を主とした記事となります。:dizzy:


## 環境説明
今回の環境はPostmanの練習に集中するため、必要最低限の実装で済ませていますが、既存コードを真似ていただければテーブルやAPIを簡単に追加することが出来ます。

API: Next.js Route Handler
DB:  PostgreSQL ( Supabase )
ORM: Prisma


## 練習用プロジェクトを構築する
### Supabase Projectを作成する

まずはSupabaseにログインし、こんな感じでprojectを作成します。
この時のパスワードは後に使用するのでコピーしておいてください。
※無料枠で作れるprojectは2つまでです。
[ サインイン >> All projects >> New project ]
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/606316/138a6c88-1f20-c31a-4b86-0a140a2792e8.png)

作成完了する画像のような画面が表示されるので、Project URL と API Keyをコピーしておいてください。
後に、.env.local ファイルで使用します。
[ project >> Home ]
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/606316/f1ea078f-eb6e-5bcb-8d32-7d70c723b720.png)

Connection Stringには2つのモードがあるのでどちらもコピーします
後に、.env ファイルで使用します。
[ project >> Home >> Project Setting >> Database ]
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/606316/6e68ee4f-b889-af77-6fa1-3773b5bf1425.png)

### Next.js プロジェクトをクローンする

既に必要なコードを揃えたプロジェクトを作成しているので下記リンクからクローンしてください
対象リポジトリ：[postman_practice repository](https://github.com/K-yokosu/postman-practice/tree/main)
対象ブランチ：postman_script_bigginer

その後、packageをinstallします
```
cd postman_practice
npm i
```


### Prismaでmigration&seedを実行する
1\. Supabaseと繋げる必要があるので、環境変数を設定していきます
```.env.local
NEXT_PUBLIC_SUPABASE_URL="https://joeqnbfydmempmaebanl.supabase.co"
NEXT_PUBLIC_SUPABASE_ANON_KEY="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImpvZXFuYmZ5ZG1lbXBtYWViYW5sIiwicm9sZSI6ImFub24iLCJpYXQiOjE3MzIwMjIwMjAsImV4cCI6MjA0NzU5ODAyMH0.xVbFpgRhdc4dIVjW189loxL-lbMR0emDtq0HbF2GECA"
```
```.env
DATABASE_URL="postgresql://postgres.joeqnbfydmempmaebanl:[project作成時のパスワード]@aws-0-ap-northeast-1.pooler.supabase.com:6543/postgres"
DIRECT_URL="postgresql://postgres.joeqnbfydmempmaebanl:[project作成時のパスワード]@aws-0-ap-northeast-1.pooler.supabase.com:5432/postgres"
```
2\. migration & seed 実行
```
npx prisma migrate dev --name init
npx prisma db seed
```
3\. Supabaseに戻るとデータが挿入されていることが確認できます
[ project >> Table Editor ]
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/606316/39f685dc-b524-3590-8e9d-d9d0ae96a5de.png)

4\. Nextに戻り、プロジェクトを起動しておいてください
```
npm run dev
```
### Postmanに環境変数とコレクションをimportする
Next プロジェクトの utils/postman/test_script にそれぞれのjsonファイルを格納しています。画像のカーソルが当たっているinputにjsonファイルの中身をペーストすればOKです。
なお、コレクションのimportも同様です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/606316/5c2d0262-7244-d76a-5143-b0f10d3b1970.png)

Get リクエストを送信して以下のようなレスポンスが返却されればOKです!!
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/606316/d76a11e2-bb7c-80e0-c252-ed1636050406.png)


## ハンズオンを復習する

https://docs.google.com/presentation/d/10fkYvSbDJ4ZcdTV8Rgy7ZZ6k0_fuhAQlitvS1kCDeuw/edit#slide=id.g2dc4fa3397b_0_257

環境は出来上がったので、あとは復習・練習あるのみです！
上記リンクが実際にハンズオン用に用意された資料なので一通りなぞるのが良いかと思います！


## 参考
https://qiita.com/sh10n/items/ecb0949652d3b8cea9a2

https://qiita.com/yokawasa/items/05913df60aea07395903

## 終わりに
最後までお読みいただきありがとうございます!!
APIを早く簡単に作りたかったので Next の Route Handler を採用しましたが、正解でした！
普段のプロジェクトで使用機会がほぼなかったので不遇な扱いをしていましたが、こういう機会では最適かもしれませんね :sunglasses:

### 追伸
アドカレ4記事目終わり〜
体験記は1日かかりませんが、試行が必要な記事は相応に時間かかりますね :joy:
まだ走ります!

:santa_tone1::santa_tone1::santa_tone1::santa_tone1: