0%
API Routes de Next.js - Crea APIs completas

API Routes

Crea APIs completas directamente en Next.js

10-15 min

API Routes de Next.js

Las API Routes de Next.js permiten crear endpoints de API directamente en tu aplicación, convirtiendo Next.js en una solución full-stack completa.

Introducción a las API Routes

Concepto básico

Las API Routes son funciones serverless que se ejecutan en el lado del servidor. Cada archivo dentro de pages/api/ se convierte en un endpoint de API.

pages/
└── api/
    ├── hello.js          → /api/hello
    ├── users/
    │   ├── index.js      → /api/users
    │   └── [id].js       → /api/users/123
    └── auth/
        ├── login.js      → /api/auth/login
        └── logout.js     → /api/auth/logout

Primer endpoint

// pages/api/hello.js
export default function handler(req, res) {
  res.status(200).json({ 
    message: 'Hello from Next.js API!',
    timestamp: new Date().toISOString()
  })
}

Prueba con curl:

curl http://localhost:3000/api/hello

Gestión de los métodos HTTP

Endpoint con varios métodos

// pages/api/users/index.js
export default function handler(req, res) {
  const { method } = req

  switch (method) {
    case 'GET':
      return getUsers(req, res)
    case 'POST':
      return createUser(req, res)
    default:
      res.setHeader('Allow', ['GET', 'POST'])
      res.status(405).end(`Method ${method} Not Allowed`)
  }
}

async function getUsers(req, res) {
  try {
    // Obtener los usuarios desde la base de datos
    const users = await db.user.findMany()
    res.status(200).json(users)
  } catch (error) {
    res.status(500).json({ error: 'Erreur serveur' })
  }
}

async function createUser(req, res) {
  try {
    const { name, email } = req.body
    
    // Validación
    if (!name || !email) {
      return res.status(400).json({ 
        error: 'Nom et email requis' 
      })
    }

    // Crear el usuario
    const user = await db.user.create({
      data: { name, email }
    })

    res.status(201).json(user)
  } catch (error) {
    res.status(500).json({ error: 'Erreur lors de la création' })
  }
}

Comentarios

Los comentarios funcionan con GitHub Discussions

Inicia sesión con GitHub para participar en la discusión

¡Enlace copiado!