レスポンススキーマ
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: { ... } }),
},
}));