Matt Pocock: createHandler with zod
This is the original Tweet that Matt Pocock’s.
He wrapped next api route handler with Zod. I think that’s a really good idea!
First, the above function is just a typescript declaration. It’s not implemented function. With createHandler , we can implement POST or PATCH method with req.body validation.
Declare createHandler
declare function createHandler<T extends z.ZodType>(
schema: T,
handler: (
req: Omit<NextApiRequest, keyof z.output<T>> &
z.output<T>,
res: NextApiResponse
) => void | Promise<void>
)
In the above code, we can see Omit. That Omit is omitting schema’s key property in NextApiRequest.
Declare the schema
const schema = z.object({
body: z.object({
id: z.string()
})
})
So above schema’s key is body , and it will be omitted in next handler’s NextApiRequest which will be req.
Declare the handler
export const handler = createHandler(schema, (req) => {
req.body.id;
})
← Go home