Skip to content

Next.js ​

Validación de RUTs en Server Actions y API Routes usando el App Router.

bash
npm install rut-kit zod
bash
pnpm add rut-kit zod
bash
bun add rut-kit zod

Server Action ​

Los Server Actions permiten validar formularios directamente en el servidor. El schema de Zod valida y formatea el RUT antes de procesarlo.

typescript
'use server'

import { z } from 'zod'
import { rutSchema } from 'rut-kit/zod'

const schema = z.object({
  rut: rutSchema
})

export async function action(formData: FormData) {
  const result = schema.safeParse({
    rut: formData.get('rut')
  })

  if (!result.success) {
    return { error: result.error.flatten() }
  }

  // result.data.rut ya viene validado y formateado
  // '18972631-7'
}

Usa safeParse para manejar errores sin lanzar excepciones. El método flatten() convierte los errores de Zod en un formato más fácil de consumir en el cliente.

API Route ​

Para endpoints REST, el patrón es similar. Valida el body de la request y retorna errores con el status code apropiado.

typescript
import { NextRequest, NextResponse } from 'next/server'
import { z } from 'zod'
import { rutSchema } from 'rut-kit/zod'

const schema = z.object({
  rut: rutSchema
})

export async function POST(request: NextRequest) {
  const body = await request.json()
  const result = schema.safeParse(body)

  if (!result.success) {
    return NextResponse.json(
      { error: result.error.flatten() },
      { status: 400 }
    )
  }

  // result.data.rut → '18972631-7'
  return NextResponse.json({ success: true })
}

El RUT en result.data.rut ya está validado y formateado, listo para guardar en base de datos.