馃敆 API Routes en Next.js

Next.js API Routes

12 - 馃敆 API Routes en Next.js

Aprende c贸mo crear endpoints API directamente dentro de tu proyecto de Next.js, sin necesidad de un servidor backend adicional.


馃 ¿Qu茅 son las API Routes?

Las API Routes son funciones del lado del servidor (Serverless Functions) que puedes crear dentro del propio proyecto Next.js. Te permiten manejar solicitudes HTTP como si tuvieras un backend, pero sin configurar un servidor Node.js aparte.

Estas rutas se alojan dentro de la carpeta app/api/ o pages/api/ (seg煤n el router que uses).

app/
 └─ api/
     └─ hola/
         └─ route.js
      

Cada carpeta dentro de api/ representa una ruta de tu API. Por ejemplo, /api/hola ser谩 accesible desde tu navegador o mediante fetch.


馃挕 Ejemplo b谩sico de una ruta API

Creamos una API que responde con un mensaje JSON.

// app/api/hola/route.js
export async function GET(request) {
  return Response.json({ mensaje: "馃憢 ¡Hola desde la API de Next.js!" });
}
      

Si visitas /api/hola ver谩s esta respuesta:

{
  "mensaje": "馃憢 ¡Hola desde la API de Next.js!"
}
      
馃攳 Puedes probarlo directamente desde el navegador o con herramientas como Postman o cURL.

馃摝 Soporte para diferentes m茅todos HTTP

Cada archivo route.js puede manejar varios m茅todos HTTP: GET, POST, PUT, DELETE, etc.

// app/api/usuarios/route.js
export async function GET() {
  return Response.json([
    { id: 1, nombre: "Jorge" },
    { id: 2, nombre: "Luc铆a" }
  ]);
}

export async function POST(request) {
  const data = await request.json();
  return Response.json({ mensaje: "Usuario creado", data });
}
      

馃敻 GET /api/usuarios → Devuelve una lista de usuarios. 馃敻 POST /api/usuarios → Recibe un JSON con datos nuevos.

fetch('/api/usuarios', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ nombre: 'Carlos' })
});
      
⚠️ Recuerda que las rutas API se ejecutan en el servidor, nunca en el navegador del cliente.

馃З Ejemplo pr谩ctico: API de productos

Vamos a crear una API que devuelva una lista de productos ficticios.

// app/api/productos/route.js
const productos = [
  { id: 1, nombre: "Teclado mec谩nico", precio: 59.99 },
  { id: 2, nombre: "Rat贸n inal谩mbrico", precio: 34.99 },
  { id: 3, nombre: "Monitor 27''", precio: 199.99 }
];

export async function GET() {
  return Response.json(productos);
}
      

Si accedes a /api/productos, ver谩s:

[
  { "id": 1, "nombre": "Teclado mec谩nico", "precio": 59.99 },
  { "id": 2, "nombre": "Rat贸n inal谩mbrico", "precio": 34.99 },
  { "id": 3, "nombre": "Monitor 27''", "precio": 199.99 }
]
      

馃攼 Acceso desde el cliente

Desde tus componentes React, puedes consumir estas rutas API f谩cilmente usando fetch() o Axios.

// app/productos/page.js
"use client";
import { useEffect, useState } from "react";

export default function ProductosPage() {
  const [productos, setProductos] = useState([]);

  useEffect(() => {
    fetch("/api/productos")
      .then(res => res.json())
      .then(data => setProductos(data));
  }, []);

  return (
    <main className="p-6">
      <h1 className="text-2xl font-bold">馃泹️ Lista de Productos</h1>
      <ul className="mt-3">
        {productos.map(p => (
          <li key={p.id} className="border-b py-2">
            {p.nombre} - ${p.precio}
          </li>
        ))}
      </ul>
    </main>
  );
}
      

馃З Resultado visual:

  • 馃柋️ Teclado mec谩nico - $59.99
  • 馃柌️ Rat贸n inal谩mbrico - $34.99
  • 馃枼️ Monitor 27'' - $199.99

馃摌 Resumen

  • 馃殌 Las API Routes permiten crear endpoints del lado del servidor dentro de Next.js.
  • 馃摝 Cada carpeta en app/api/ es una ruta.
  • 馃攣 Puedes manejar varios m茅todos HTTP (GET, POST, PUT, DELETE).
  • 馃挰 Se consumen f谩cilmente desde el cliente con fetch o Axios.
✅ Con esto, Next.js puede funcionar como frontend y backend al mismo tiempo.

Publicar un comentario

0 Comentarios