Fastifyでバリデーション・シリアライゼーションする
Ajvでリクエストのバリデーション、パースを行うことでリクエストを高速に処理することができる。 code:ts
import { Static, Type } from '@sinclair/typebox';
// instance: FastifyInstance
// JSON Schemaを作成する
const examplePutParamsSchema = Type.Object({
id: Type.String(),
});
const examplePutBodySchema = Type.Object({
name: Type.String(),
body: Type.String(),
});
const exampleSchema = {
params: examplePutParamsSchema,
body: examplePutBodySchema,
};
// Typeboxで作成したJSON Schemaから型定義をつくる
type TExamplePutParamsSchema = Static<typeof examplePutParamsSchema>;
type TExamplePutBodySchema = Static<typeof examplePutBodySchema>;
interface IExamplePutRouteGenericInterface = {
Params: TExampleParamsSchema;
Body: TExampleBodySchema;
}
instance.put<IExamplePutRouteGenericInterface>(
'/example',
exampleSchema,
(request, reply) => {
const id = request.params.id // string
const body = request.body; // { name:string, body: string }
}
);