はじめに
業務でKoa
を使うことになったので、Githubのサンプルに沿って勉強していきます。
Node - Koa - Typescript Project の始め方
サンプルをクローン
mkdir sample-pjt && cd sample-pjt
git clone https://github.com/javieraviles/node-typescript-koa-rest
cd node-typescript-koa-rest
yarn
ローカルで開発する場合の微修正
SSLの説明で書かれている通り、server.ts
の微修正が必要です。
...
createConnection({
type: 'postgres',
url: config.databaseUrl,
synchronize: true,
logging: false,
entities: config.dbEntitiesPath,
ssl: config.dbsslconn, // if not development, will use SSL
// ↓この中身をコメントアウトする
extra: {
// ssl: {
// rejectUnauthorized: false, // Heroku uses self signed certificates
// },
},
})
...
また、.example.env
を.env
に修正します。
DBコンテナをホスト
portが被るので、postgresアプリを起動している場合は、コンテナを立ち上げる前に停止しておきましょう。
docker-compose up
ローカル開発スタート
yarn watch-server
DBの動作確認
とりあえずmigrationが成功していることがわかります。
docker-compose exec db psql -U user apidb
apidb=# \dt
List of relations
Schema | Name | Type | Owner
--------+------+-------+-------
public | user | table | user
(1 row)
apidb=# select * from "user"; #ちゃんと"user"にしてくださいね。一応。
id | name | email
----+------+-------
(0 rows)
また、http://localhost:8080/
にアクセスしてブラウザ上で確認することもできます。
JWTの設定
説明に書いてある通り、Bearerトークン(下記)を設定してリクエストします。
Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjEiLCJuYW1lIjoiSmF2aWVyIEF2aWxlcyIsImVtYWlsIjoiYXZpbGVzbG9wZXouamF2aWVyQGdtYWlsLmNvbSJ9.rgOobROftUYSWphkdNfxoN2cgKiqNXd4Km4oz6Ex4ng
https://jwt.io/#debugger-io
でトークンの中身を見ることもできます。
POSTMANでの動作確認
SwaggerでAPIのドキュメントを見る
http://localhost:3000/swagger-json
にAPIドキュメントが出力されます。
このエンドポイントはデフォルト設定で上記URLになっていますが、src/protectedRoutes.ts
の中で設定することができます。
Swagger Editorに上のURLを読み込ませればAPIのドキュメントを表示することができます。
最後に
このサンプルはリクエストのvalidationやJWTのハンドリングを全て示してくれています。ありがたく使わせていただきましょう。