You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
importFastifyfrom"fastify";import{serializerCompiler,validatorCompiler,ZodTypeProvider}from"fastify-type-provider-zod";importzfrom"zod";constapp=Fastify()// Add schema validator and serializerapp.setValidatorCompiler(validatorCompiler);app.setSerializerCompiler(serializerCompiler);app.withTypeProvider<ZodTypeProvider>().route({method: "GET",url: "/",// Define your schemaschema: {querystring: z.object({name: z.string().min(4),}),response: {200: z.string(),},},handler: (req,res)=>{res.send(req.query.name);},});app.listen({port: 4949});
How to use together with @fastify/swagger
importfastifyfrom'fastify';importfastifySwaggerfrom'@fastify/swagger';importfastifySwaggerUIfrom'@fastify/swagger-ui';import{z}from'zod';import{jsonSchemaTransform,createJsonSchemaTransform,serializerCompiler,validatorCompiler,ZodTypeProvider,}from'fastify-type-provider-zod';constapp=fastify();app.setValidatorCompiler(validatorCompiler);app.setSerializerCompiler(serializerCompiler);app.register(fastifySwagger,{openapi: {info: {title: 'SampleApi',description: 'Sample backend service',version: '1.0.0',},servers: [],},transform: jsonSchemaTransform,// You can also create transform with custom skiplist of endpoints that should not be included in the specification://// transform: createJsonSchemaTransform({// skipList: [ '/documentation/static/*' ]// })});app.register(fastifySwaggerUI,{routePrefix: '/documentation',});constLOGIN_SCHEMA=z.object({username: z.string().max(32).describe('Some description for username'),password: z.string().max(32),});app.after(()=>{app.withTypeProvider<ZodTypeProvider>().route({method: 'POST',url: '/login',schema: {body: LOGIN_SCHEMA},handler: (req,res)=>{res.send('ok');},});});asyncfunctionrun(){awaitapp.ready();awaitapp.listen({port: 4949,});console.log(`Documentation running at http://localhost:4949/documentation`);}run();