LoginSignup
0
0

More than 3 years have passed since last update.

Node - Koa - Typescript Project の始め方

Last updated at Posted at 2021-04-26

はじめに

業務で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/にアクセスしてブラウザ上で確認することもできます。
スクリーンショット 2021-04-27 20.32.34.png

JWTの設定

説明に書いてある通り、Bearerトークン(下記)を設定してリクエストします。

Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjEiLCJuYW1lIjoiSmF2aWVyIEF2aWxlcyIsImVtYWlsIjoiYXZpbGVzbG9wZXouamF2aWVyQGdtYWlsLmNvbSJ9.rgOobROftUYSWphkdNfxoN2cgKiqNXd4Km4oz6Ex4ng

https://jwt.io/#debugger-ioでトークンの中身を見ることもできます。

スクリーンショット 2021-04-26 19.41.34.png

POSTMANでの動作確認

スクリーンショット 2021-04-26 17.28.00.png
スクリーンショット 2021-04-26 17.29.20.png

SwaggerでAPIのドキュメントを見る

http://localhost:3000/swagger-jsonにAPIドキュメントが出力されます。
このエンドポイントはデフォルト設定で上記URLになっていますが、src/protectedRoutes.tsの中で設定することができます。
スクリーンショット 2021-04-29 17.30.38.png

Swagger Editorに上のURLを読み込ませればAPIのドキュメントを表示することができます。

スクリーンショット 2021-04-29 17.27.27.png

最後に

このサンプルはリクエストのvalidationやJWTのハンドリングを全て示してくれています。ありがたく使わせていただきましょう。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0