fastify
概要
サーバの起動
fastify#listenを呼ぶと、サーバを起動できます。
code:javascript
const fastify = require('fastify')();
const port = 3000;
fastify.listen(port, (err, address) => {
...
});
ルーティング
fastify#getやfastify#post等を使って定義します
code: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のシリアライズ/デシリアライズが高速されるので、指定することを推奨します
ロギング
code:javascript
const 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モジュールは標準で型定義ファイルを提供しています プラグイン
- Process load measuring plugin for Fastify, with automatic handling of "Service Unavailable" 参考