API en Next.js · Paso 5 de 9
Construir tu primer endpoint de API
Dónde colocar las rutas en app/api, cómo se traduce la carpeta a la URL y el contenido mínimo de route.ts para devolver JSON.
En Next.js con App Router, las rutas de API no van en pages/api (eso es el modelo antiguo). Van dentro de app/api: cada subcarpeta es un segmento de la URL pública bajo /api/....
El archivo que define el comportamiento se llama route.ts (o route.js) y exporta funciones con el nombre del método HTTP que quieres atender: GET, POST, PUT, DELETE, etc.
Cómo se lee la ruta en el disco
La carpeta app es la raíz del enrutador. Todo lo que pongas en app/api/... se sirve bajo la URL base /api/... (el segmento api forma parte de la ruta pública).
Ejemplo: si creas app/api/saludo/route.ts, el navegador o fetch pueden llamar a /api/saludo. Si anidas carpetas, por ejemplo app/api/v1/users/route.ts, la URL será /api/v1/users.
En la plantilla del curso ya existe una carpeta app/api/ en el repositorio: ahí es donde convive tu API con el resto de la app (misma base de código, mismo despliegue).
app/
api/
saludo/
route.ts → GET /api/saludo
v1/
users/
route.ts → GET /api/v1/users
Estructura típica (ejemplo)
Qué va dentro de route.ts
Ese archivo exporta funciones manejadoras asíncronas. Un GET mínimo puede devolver datos con NextResponse.json(...) o el objeto Response estándar.
No hace falta configurar Express ni un servidor aparte: Next.js enlaza la petición HTTP con la función exportada cuando alguien visita esa URL (o hace fetch desde el cliente).
import { NextResponse } from "next/server"
export async function GET() {
return NextResponse.json({
ok: true,
mensaje: "Tu primer endpoint",
})
}
// Otros métodos en el mismo archivo, si los necesitas:
// export async function POST(request: Request) { ... }
app/api/saludo/route.ts
Probar el endpoint en local
Con npm run dev activo, abre en el navegador http://localhost:3000/api/saludo (ajusta el path al archivo que hayas creado). Deberías ver JSON en pantalla.
También puedes probarlo desde la pestaña Red (Network) de las herramientas de desarrollo o con curl en la terminal: lo importante es que la petición sea GET a la misma ruta que definiste en app/api.
Cuando hayas leído el texto, marca la lección para seguir el progreso.