User data
This is an example on how to handle user data in an endpoint:
import { defineEventHandler } from 'h3'import type { CompatibilityEvent } from 'h3'import { z, parseParamsAs, parseBodyAs } from "@sidebase/nuxt-parse"// Define the schema of the parameters you expect the user to provide you withconst paramsSchema = z.object({ id: z.string().uuid(),})// Define the schema of the body you expect the user to provide you withconst bodySchema = z.object({ name: z.string(), age: z.number()})// Get a nice type to use throughout your code and componentstype RequestBody = z.infer<typeof bodySchema>export default defineEventHandler(async (event: CompatibilityEvent) => { // Validate and then get the parameters // This automatically throws a nice HTTP 422 error with more information if the data is invalid const params = parseParamsAs(event, paramsSchema) let body: RequestBody; try { body = parseBodyAs(event, paramsSchema) } catch(error) { // Fallback, this avoids automatic raising + returning of the HTTP 422 error body = { name: 'Bernd', age: 88 } } // Return the full entity return { id: params.id, ...body }})