Genera APIs REST Completa con IA
Prompt para diseñar e implementar APIs REST con validación y tests.
Imagina que necesitas construir una API REST para una aplicación de gestión de tareas. Tienes que definir endpoints, manejar errores, validar datos, escribir tests y documentar todo. Normalmente, esto te llevaría días o semanas. Pero si usas inteligencia artificial de forma estratégica, puedes generar una API REST completa en cuestión de minutos. No es magia: es saber cómo pedirle a la IA lo que necesitas. En este artículo te voy a enseñar un prompt que te permitirá diseñar e implementar APIs REST con validación y tests, paso a paso, con ejemplos reales.
La IA generativa ha avanzado lo suficiente como para producir código funcional y estructurado. Lo que antes requería horas de copy-paste y ajustes manuales, ahora se puede conseguir con un prompt bien diseñado. Pero cuidado: no se trata de copiar y pegar ciegamente. La clave está en saber qué pedir y cómo interpretar lo que obtienes. Con el enfoque correcto, puedes acelerar el desarrollo, reducir errores humanos y mantener una coherencia en el diseño.
El prompt completo para generar APIs REST con IA
Aquí tienes un prompt que he refinado tras varias iteraciones. Funciona con modelos como GPT-4, Claude o Gemini. Cópialo exactamente, pero adapta los detalles de tu proyecto.
Eres un desarrollador senior experto en Node.js y Express. Genera una API REST completa para un sistema de gestión de tareas (task manager). La API debe incluir: - Endpoints: GET /tasks, POST /tasks, GET /tasks/:id, PUT /tasks/:id, DELETE /tasks/:id. - Validación de datos con Joi: título (string, requerido, 3-100 caracteres), descripción (string, opcional, máx 500), estado (enum: 'pendiente', 'en progreso', 'completada', por defecto 'pendiente'). - Manejo de errores con middleware personalizado. - Tests unitarios con Jest y Supertest para cada endpoint (mínimo 2 tests por endpoint: éxito y error). - Documentación básica en comentarios JSDoc. - Código limpio con async/await y try/catch. - Estructura de carpetas: src/routes, src/controllers, src/middleware, src/validators, tests/. Devuelve el código completo de cada archivo, con explicaciones breves en comentarios. Además, incluye un ejemplo de uso con curl para probar la API.
Explicación de cada parte del prompt
Este prompt no es aleatorio. Cada elemento tiene una función específica para que la IA entienda exactamente lo que quieres.
Rol del asistente
Al principio le dices "Eres un desarrollador senior experto en Node.js y Express". Esto establece el nivel de calidad y las herramientas que esperas. La IA adoptará un tono profesional y generará código con buenas prácticas.
Definición del proyecto
Indicas el contexto: "sistema de gestión de tareas". Especificar el dominio ayuda a la IA a generar nombres de variables, rutas y lógica coherentes. Si no lo haces, puede producir código genérico y poco útil.
Endpoints concretos
Listas los endpoints exactos. No dejes ambigüedad. Si quieres paginación o filtros, añádelos aquí. En este caso, puse los cinco básicos de un CRUD.
Validación con Joi
Al mencionar una librería específica (Joi) y los campos con sus restricciones, la IA sabe qué validar y cómo. Si no lo haces, podría usar validación manual o una librería que no conoces.
Tests y herramientas
Pedir "Jest y Supertest" con "mínimo 2 tests por endpoint" asegura que el código sea testeable. La IA generará tanto los tests como el código fuente, así que todo será coherente.
Estructura de carpetas
Al definir la estructura (src/routes, src/controllers, etc.), evitas que la IA mezcle todo en un solo archivo. Esto es clave para mantener el código organizado.
Cómo usarlo paso a paso
Sigue estos pasos para sacarle el máximo partido al prompt. No te saltes ninguno, especialmente si eres nuevo en esto.
Paso 1: Adapta el prompt a tu proyecto
Cambia "gestión de tareas" por tu dominio real, como "gestión de usuarios" o "catálogo de productos". Ajusta los campos de validación según tu modelo de datos. Por ejemplo, si trabajas con productos, usa "nombre", "precio", "categoría".
Paso 2: Pega el prompt en tu IA preferida
Usa ChatGPT, Claude, Gemini o cualquier modelo que maneje código. Asegúrate de que el modelo tenga suficiente contexto (no lo cortes). Si el prompt es muy largo, algunos modelos pueden truncarlo, así que verifica que la respuesta sea completa.
Paso 3: Revisa el código generado
No copies y pegues sin leer. La IA puede cometer errores sutiles: variables mal nombradas, imports incorrectos o lógica duplicada. Lee cada archivo y comprueba que los endpoints hacen lo que pides. Por ejemplo, verifica que el POST /tasks realmente valide el título y devuelva un error si falta.
Paso 4: Ejecuta los tests
Copia el código en tu proyecto, instala las dependencias (npm install express joi jest supertest) y ejecuta los tests (npm test). Si fallan, revisa los mensajes de error. La IA suele generar tests que pasan si el código es correcto, pero a veces hay que ajustar rutas o nombres.
Paso 5: Ajusta y personaliza
La IA te da una base sólida, pero tu proyecto puede necesitar cambios: añadir autenticación, conectar a una base de datos real (en lugar de un array en memoria), o agregar logging. Modifica el código según tus necesidades. No tengas miedo de refactorizar.
Ejemplo real de lo que genera la IA
Si ejecutas el prompt anterior con un modelo como GPT-4, obtendrás algo similar a esto para el controlador de tareas:
// src/controllers/taskController.js const taskService = require('../services/taskService'); / Obtiene todas las tareas. @param {Object} req - Request de Express @param {Object} res - Response de Express / const getAllTasks = async (req, res) => { try { const tasks = await taskService.getAll(); res.json(tasks); } catch (error) { res.status(500).json({ error: 'Error al obtener tareas' }); } }; module.exports = { getAllTasks }; Y para los tests, algo como:
// tests/tasks.test.js const request = require('supertest'); const app = require('../src/app'); describe('GET /tasks', () => { it('debería devolver un array de tareas', async () => { const res = await request(app).get('/tasks'); expect(res.statusCode).toBe(200); expect(Array.isArray(res.body)).toBe(true); }); it('debería devolver 200 incluso si no hay tareas', async () => { const res = await request(app).get('/tasks'); expect(res.statusCode).toBe(200); }); });
Tabla de casos de uso
Este prompt no sirve solo para tareas. Aquí tienes una tabla con otros dominios donde puedes aplicarlo, cambiando solo los campos de validación.
Dominio Endpoints base Campos de validación Gestión de usuarios GET /users, POST /users, GET /users/:id, PUT /users/:id, DELETE /users/:id nombre (string, requerido), email (email, requerido), rol (enum: 'admin', 'user') Catálogo de productos GET /products, POST /products, GET /products/:id, PUT /products/:id, DELETE /products/:id nombre (string, requerido), precio (number, positivo), categoría (string, opcional) Blog de artículos GET /posts, POST /posts, GET /posts/:id, PUT /posts/:id, DELETE /posts/:id título (string, requerido, 5-200 chars), contenido (string, requerido), autor (string, requerido) API de reservas GET /bookings, POST /bookings, GET /bookings/:id, PUT /bookings/:id, DELETE /bookings/:id fecha (date, requerido), hora (string, requerido), comensales (number, 1-20)
Consejo práctico
Cuando uses este prompt, no te limites a una sola ejecución. Si el resultado no es perfecto, refina el prompt. Por ejemplo, si necesitas autenticación JWT, añade "Incluye middleware de autenticación con JWT en todos los endpoints protegidos". También puedes pedir "usa TypeScript en lugar de JavaScript" si trabajas con tipado estático. La IA responde mejor cuanto más específico seas.
Limitaciones de este enfoque
No te voy a engañar: la IA no es perfecta. Estas son las limitaciones principales que debes tener en cuenta:
- Falta de contexto real: La IA no conoce tu base de datos, tu infraestructura ni tus reglas de negocio complejas. El código que genera es genérico y asume un almacenamiento en memoria o un modelo simple.
- Tests frágiles: Los tests generados suelen ser básicos y no cubren casos borde como concurrencia, inyección SQL (si usas BD real) o rendimiento. Tendrás que ampliarlos.
- Dependencia del modelo: No todos los modelos generan código de la misma calidad. GPT-4 suele ser más fiable que versiones gratuitas. Prueba con varios si el resultado no te convence.
- Seguridad superficial: El prompt no incluye medidas de seguridad como rate limiting, validación de tokens CSRF o sanitización de entradas. Esto es responsabilidad tuya.
- Mantenimiento a largo plazo: El código generado puede no seguir los estándares de tu equipo o las convenciones de tu proyecto. Refactoriza y documenta según tus necesidades.
Cierre: resumen y próximos pasos
Generar una API REST completa con IA es posible si sabes cómo pedirlo. El prompt que te he dado te permite obtener un CRUD funcional con validación y tests en cuestión de minutos. Pero recuerda: la IA es una herramienta, no un sustituto del criterio técnico. Úsala para acelerar prototipos, aprender patrones o generar bases sólidas, pero siempre revisa, prueba y adapta el código a tu contexto real.
Ahora te toca a ti. Abre tu terminal, prepara un proyecto Node.js vacío, pega el prompt adaptado a tu dominio y mira lo que obtienes. Luego, ejecuta los tests, ajusta lo que no funcione y comparte tu experiencia. La práctica te hará cada vez más rápido y preciso al trabajar con IA.


