Fastifyでアプリケーションサーバを書く際のコード構成
Fastifyでコードをどのように組み合わせてアプリケーションサーバを組み上げるか?という話。 内部のパターンに関係ないことを書く。
mgn901.iconがよくやるのは、
ルーティングするプラグインを書いて、
FastifyInstance.registerで使う。
「ルーティングするプラグインを書く」
code:ts
// exampleController.ts
import { FastifyPluginAsync } from 'fastify';
import { doSomething } from './doSomething'; // ビジネスロジックを書いたファイル
export const exampleController: FastifyPluginAsync = (instance, options) => {
instance.get('/example', async (request, reply) => {
const output = doSomething();
reply.status(200).send(output);
});
}
このサンプルコードではルーティングの処理に省略記法を使っているが、instance.routeを使ったほうが、パスもメソッドもハンドラーも一つのFastifyRouteOptionsに入れて扱うことができる。
optionsを変数に切り出して変数名で説明する機会を設けることができて、見通しよく書けそうである。mgn901.icon
「FastifyInstance.registerで使う」
code:ts
import fastify from 'fastify';
import { exampleController } from './exampleController';
const instanceOptions = {
logger: true,
};
const listenOptions = {
port: 3000,
};
const instance = fastify(instanceOptions);
instance.register(exampleController);