Validation
Mage has built-in support for validating request data using libraries compatible with Standard Schema.
Validating request data
You can register a middleware to validate parts of the request data. This example uses Zod to validate the requests form data.
import { useValidate } from "@mage/app/validate";
import { z } from "zod";
const personSchema = z.object({
firstName: z.string(),
lastName: z.string(),
});
app.post("/form", useValidate("form", personSchema), (c) => {
c.text("Valid!");
});
Supported request data to validate includes; json
, form
, params
, search-params
.
Reading validated data
You can access validated data from the contexts request object.
import { useValidate } from "@mage/app/validate";
import { z } from "zod";
const personSchema = z.object({
firstName: z.string(),
lastName: z.string(),
});
type Person = z.infer<typeof personSchema>;
app.post("/form", useValidate("form", personSchema), (c) => {
c.json(c.req.valid<Person>("form"));
});