メインコンテンツまでスキップ

レスポンススキーマ

Fastify は json スキーマが定義された場合に JSON.stringfy() の代わりに fast-json-stringfy を用いてレスポンスをシリアライズします。 このスキーマは JSON Schema Draft 7 である必要があります。

Frourio においては、ServerMethodHandler 内の schamas として定義することで、Fastify (frourio) だけでなく Express (frourio-express) においてもシリアライズを高速にできます。。

レスポンススキーマの定義方法については Fastify ドキュメントを参照してください。

controller.ts
import { defineController } from './$relay';

export default defineController(() => ({
get: () => ({ status: 200, body: 'Hello' }),
post: {
validators: {
query: z.object({ ... }),
body: z.object({ ... }),
},
schemas: {
response: {
201: {
type: 'object',
properties: { id: { type: 'number' }, port: { type: 'string' } }
}
}
},
hooks: {
preValidation: [],
preHandler: (req, _, done) => { ...; done(); },
},
handler: ({ body }) => ({ status: 201, body: { ... } }),
},
}));