Koa - Typescript Project の始め方


はじめに

業務で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の微修正が必要です。

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のハンドリングを全て示してくれています。ありがたく使わせていただきましょう。