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"));
});