fastify
概要
サーバの起動
fastify#listen
を呼ぶと、サーバを起動できます。
javascriptconst fastify = require('fastify')();
const port = 3000;
fastify.listen(port, (err, address) => {
...
});
ルーティング
fastify#get
や fastify#post
等を使って定義します
javascript fastify.get('/', async (req, reply) => {
// 親のプラグイン(api/index.js)で`knex`が登録されているため、ここで参照が可能
return await doSomething(req);
});
プラグインシステムについて
プラグインの実体は (fastify, options, next) => any
のようなシグネチャを持つ関数です
fastify#register
によってプラグインを登録できます
プラグインにはスコープが存在し、各プラグインごとに適用範囲を細かく制限できます
プラグインには親子関係が存在します
子のプラグインは、親のプラグインのスコープを継承するため、親側で登録されたプラグインも利用できます
子のプラグインで登録されたプラグインは、親のプラグインには適用されません (利用できません)
fastify-plugin
プラグインを記述するときに使用するnpmモジュールです
プラグインの登録
バリデーション
fastify#get
等のメソッドでルートを定義する際にスキーマを渡すと、その定義をもとにバリデーションが行われます
fastify#{post|patch|get}(path, schema, handler);
schema
引数を指定すると、JSONのシリアライズ/デシリアライズが高速されるので、指定することを推奨します
ロギング
javascriptconst fastify = Fastify({ logger: false }); // ロギングを無効化(デフォルト)
const fastify = Fastify({ logger: { level: 'info' } });
fastify.log.info('[info] hoge'); // 出力される
fastify.log.error('[error]'); // 出力されない
const fastify = Fastify({ logger: { level: 'error' } });
fastify.log.info('[info] hoge'); // 出力されない
fastify.log.error('[error] error'); // 出力される
fastify
のファクトリ関数の logger
オプションで、ロギングに関する設定を変更できます
TypeScript対応について
fastifyのnpmモジュールは標準で型定義ファイルを提供しています
プラグイン
参考