Lección 19. API REST.

Una API REST es una forma de exponer datos y funcionalidades para que otras aplicaciones (frontend, apps móviles, etc.) puedan comunicarse con nuestro servidor.

En Next.js, podemos crear APIs sin necesidad de Express u otros frameworks.

Next.js incluye su propio sistema de rutas de API, el cual funciona directamente dentro del proyecto.

¿Dónde se crean las APIs en Next.js?_

En el App Router, las APIs se crean dentro del directorio:

Copiar código
src/app/api/

Cada carpeta dentro de api representa una ruta de la API.

Ejemplo básico de una API REST._

Supongamos que queremos crear una API para manejar usuarios.

La estructura mínima sería:

Copiar código
|-.next/
|-node_modules/
|-public/
|-src/
  |-app/
    |-api/
      |-users/
        |-route.ts
    |-page.tsx
|- ...Otros archivos...

El archivo clave es route.ts.

Aquí es donde definimos los métodos HTTP.

Método GET (obtener datos)._

Dentro de app/api/users/route.ts:

Copiar código
import { NextResponse } from "next/server";

export async function GET() {
  const users = [
    { id: 1, name: "Juan" },
    { id: 2, name: "María" },
    { id: 3, name: "Carlos" }
  ];

  return NextResponse.json(users);
}

Este método responde a la ruta:

GET/api/users

Y devuelve un JSON con la información.

Método POST (enviar datos)._

Ahora agreguemos un método POST para crear usuarios.

Copiar código
import { NextResponse } from "next/server";

export async function POST(request) {
  const body = await request.json();

  return NextResponse.json({
    message: "Usuario creado correctamente",
    user: body
  });
}

Este método se ejecuta cuando enviamos datos usando:

POST/api/users

Por ejemplo:

Copiar código
await fetch("/api/users", {
  method: "POST",
  headers: {
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    name: "Juan",
    age: 25,
    email: "juan@email.com"
  })
});

Métodos soportados en route.ts._

Next.js permite definir los siguientes métodos HTTP:

  1. GET – Obtener datos.

  2. POST – Crear datos.

  3. PUT – Actualizar datos.

  4. DELETE – Eliminar datos.

Cada uno se define como una función exportada con el nombre del método.

Consumo de la API desde el frontend._

Podemos consumir esta API desde cualquier componente usando fetch.

Copiar código
const response = await fetch("/api/users");
const data = await response.json();

console.log(data);

De esta manera, nuestro frontend y backend viven en el mismo proyecto.

Nota: Las APIs en Next.js se ejecutan del lado del servidor, por lo que pueden manejar bases de datos, lógica segura y validaciones.