Fastifyのセットアップ — npmで最小サーバーを起動する
この章では、Fastifyをインストールして、ブラウザやcurlからアクセスできる最小サーバーを作ります。まだDBや認証は入れません。最初は「起動する」「JSONが返る」「ログが出る」だけを確認します。
学習者最初からTypeScriptやDBも入れた方が実務っぽくないですか?
先生いきなり全部入れると、どの仕組みでつまずいたのか分かりにくくなります。まずFastify単体で動かしてから、部品を足していきましょう。
プロジェクトを作る
空のディレクトリで package.json を作ります。
mkdir fastify-todo-api
cd fastify-todo-api
npm init -yES Modulesで書くため、package.json に "type": "module" を追加します。
{
"name": "fastify-todo-api",
"version": "1.0.0",
"type": "module",
"scripts": {
"dev": "node --watch src/server.js",
"start": "node src/server.js"
}
}"type": "module" を入れると、.js ファイルで import / export が使えるようになります。
Fastifyをインストールします。
npm install fastify最小サーバーを書く
src/server.js を作ります。
import Fastify from 'fastify';
const fastify = Fastify({
logger: true,
});
fastify.get('/', async () => {
return { message: 'Hello Fastify!' };
});
try {
await fastify.listen({ port: 3000 });
} catch (err) {
fastify.log.error(err);
process.exit(1);
}起動します。
npm run devブラウザで http://localhost:3000 を開くか、ターミナルで次を実行します。
curl http://localhost:3000次のようなJSONが返れば成功です。
{
"message": "Hello Fastify!"
}Fastify() の構文
構文: Fastify(options)
| 引数 | 型 | 説明 |
|---|---|---|
options | object | サーバー全体の設定。logger、bodyLimit、trustProxy などを指定できる |
戻り値: Fastifyインスタンス。ルート登録、プラグイン登録、サーバー起動などの入口になります。
const fastify = Fastify({
logger: true,
});logger: true を指定すると、Fastifyが内部で使うロガーが有効になります。リクエストのログやエラーを追いやすくなるため、学習中も本番でも基本的に有効にしておくとよいです。
listen() の構文
構文: fastify.listen(options)
| 引数 | 型 | 説明 |
|---|---|---|
options.port | number | 待ち受けるポート番号 |
options.host | string | 待ち受けるホスト。ローカル確認なら省略でよい |
戻り値: Promise。起動に成功すると解決し、失敗するとrejectされます。
await fastify.listen({ port: 3000 });Dockerや外部からアクセスする環境では、host: '0.0.0.0' を指定することがあります。ただしローカル学習では、まず省略したままで十分です。
ファイル分割の準備
今は server.js にすべて書いていますが、テストしやすくするには「アプリを作る関数」と「listenする処理」を分けます。後の章で次のような形へ変えていきます。
src/
├── app.js # Fastifyインスタンスを作ってルートを登録する
└── server.js # appを起動するこの分割は、テストの章で fastify.inject() を使うときに効いてきます。
参考リンク
次章では、GET や POST のルートを増やし、URLとHTTPメソッドで処理を分ける方法を学びます。
