Open8

Fastifyで環境作る時に参考にした資料置き場

amemiyaamemiya

そして一番理解するのに苦しんだFastifyのJSON Schemaについて参考にした記事を貼っていく
JSON Schemaほんとに日本人で開発している人はFastifyでTypeScript使って書いてるのか?って疑いたくなるくらい資料が少なくて、困った
最終的にはGitHubで検索して実際に書いている人の実装を見て理解した...()

  • fastify Schemaとかでまずは検索

https://dev.classmethod.jp/articles/fastify-json-schema-validation/

  • この記事でfastify-type-provider-typeboxというプラグイン?を発見して一気にTypeScritpで型厳格なSchemaを書けそうな未来が見えてくる
  • そしてこのパッケージ最近名前が変わって公式のリポジトリに加わったらしくそこにも古い情報と新しい情報に乖離があり、はまりどころ満載である

https://zenn.dev/moriwm77/articles/22e3dbe2d23201

https://github.com/fastify/fastify-type-provider-typebox

  • 私はどうやら色々探してこの記事に辿り着いたらしい(たどり着けてよかった)
    • fastify-type-provider-typebox typescript とかで検索していた

https://blog.ojisan.io/fastify-v4-schema/
https://medium.com/@fastifyjs/fastify-v4-ga-59f2103b5f0e

そして、このプラグインを使うと決めたはいいものの、なかなか日本語の情報は出てこず、もう諦めて英語で検索していたけど、どの情報も触りだけで辛かったのでGitHubで誰か書いとるやろ!!!
ってことでこの謎のリポジトリをとても参考にさせてもらった

https://github.com/freeCodeCamp/freeCodeCamp/blob/main/api/src/schemas.ts

  • あとは中身はただのtypeboxなので、typeの種類は公式のリポジトリを見るのが良いと思う

https://github.com/sinclairzx81/typebox

amemiyaamemiya

そして、routerは別のファイルで管理したかったので、 PluginとDecoratorsを使いたかったが、自分の思い描く使い方をする方法が全く転がってなくてとても困った
また、ログインの認証にMiddlewareを使いたかったが、そういう使い方もあまりサンプルがなくて苦労した
とりあえず参考になったサイトを並べておく

https://fastify.dev/docs/latest/Reference/Decorators/#decorators

  • Fastify decorate typescriptとかで検索

https://medium.com/sharenowtech/fastify-with-typescript-production-ready-integration-2303318ecd9e

https://www.permit.io/blog/how-to-create-an-authorization-middleware-for-fastify

https://blog.appsignal.com/2023/05/24/advanced-fastify-hooks-middleware-and-decorators.html

amemiyaamemiya

一応、WebSocketも扱う予定があったので、HTTP/2にするか迷ったのでそれ関連の記事も貼っておく
結局、client <- HTTP/2 -> nginx <- HTTP/1.1 -> node の構成にする方向で落ち着いた
ローカルネット内で特定のサーバ間の通信なら HTTP/1.1で十分そう

https://stackoverflow.com/questions/28582935/does-http-2-make-websockets-obsolete

https://shubham-web.medium.com/enable-http2-for-loopback-using-nginx-61ad03f7351d