Discusión

Generador de Blueprint de Diseño de API RESTful

De Wikiprompt, la enciclopedia libre de prompts

Lautaro Schiaffino
Contribuido porLautaro Schiaffino

28 dic 2025

Generador de Blueprint de Diseño de API RESTful Genera un documento de diseño de API completo que incluye endpoints, esquemas de request/response, manejo de errores, autenticación y especificación OpenAPI.

Contenido del PromptGuardar

🌐
Eres un arquitecto de APIs que ha diseñado APIs usadas por millones de desarrolladores en empresas como Stripe, Twilio y GitHub. Tus APIs son conocidas por ser intuitivas, consistentes y amigables para desarrolladores. Sigues las mejores prácticas de REST siendo pragmático respecto a las necesidades del mundo real. Necesito que diseñes una API completa para lo siguiente: ## Requisitos del Proyecto Propósito de la API: [DESCRIBE QUÉ HACE LA API] Usuarios Objetivo: [QUIÉN USARÁ ESTA API] Recursos Principales: [LISTA LAS ENTIDADES PRINCIPALES, ej., Users, Products, Orders] Método de Autenticación: [API KEY / OAuth 2.0 / JWT / etc.] Escala Esperada: [REQUESTS POR SEGUNDO / NÚMERO DE USUARIOS] ## Genera un Documento Completo de Diseño de API: ### 1. VISIÓN GENERAL DE LA API - Nombre y versión de la API (ej., v1) - Recomendación de estructura de URL base - Content-Type (se asume JSON, indicar excepciones) - Estilo de API (REST, con notas sobre endpoints estilo RPC si es necesario) - Recomendación de estrategia de rate limiting ### 2. AUTENTICACIÓN Y AUTORIZACIÓN Diseña el sistema de autenticación: - Detalles del método de autenticación - Formato y ciclo de vida del token - Estrategia de refresh token (si aplica) - Modelo de scopes/permisos - Ejemplo de headers de autenticación ``` Authorization: Bearer <token> X-API-Key: <api_key> ``` ### 3. DISEÑO DE RECURSOS Para cada recurso principal, define: #### Recurso: [NOMBRE] - Descripción - Relaciones con otros recursos - Formato del identificador único (UUID, slug, auto-incremento) **Endpoints:** ``` GET /[resources] - List all (with pagination) GET /[resources]/:id - Get single resource POST /[resources] - Create new resource PUT /[resources]/:id - Full update PATCH /[resources]/:id - Partial update DELETE /[resources]/:id - Delete resource ``` **Esquema de Datos:** ```json { "id": "string (uuid)", "created_at": "string (ISO 8601)", "updated_at": "string (ISO 8601)", // ... resource-specific fields } ``` **Tabla de Definición de Campos:** | Campo | Tipo | Requerido | Descripción | Restricciones | |-------|------|-----------|--------------|----------------| ### 4. FORMATOS DE REQUEST/RESPONSE **Respuesta Estándar de Éxito:** ```json { "data": { ... }, "meta": { "request_id": "req_abc123", "timestamp": "2024-01-15T10:30:00Z" } } ``` **Respuesta de Lista (con paginación):** ```json { "data": [ ... ], "pagination": { "total": 100, "page": 1, "per_page": 20, "total_pages": 5, "next_cursor": "eyJpZCI6MTAwfQ==", "has_more": true }, "meta": { ... } } ``` **Parámetros de Query para Listas:** - `page` / `cursor` - Paginación - `per_page` / `limit` - Elementos por página (máx 100) - `sort` - Campo por el cual ordenar - `order` - asc/desc - `filter[field]` - Filtrado - `include` - Recursos relacionados a incluir - `fields` - Sparse fieldsets (selección de campos) ### 5. MANEJO DE ERRORES **Formato de Respuesta de Error:** ```json { "error": { "code": "VALIDATION_ERROR", "message": "Human readable message", "details": [ { "field": "email", "code": "INVALID_FORMAT", "message": "Email must be a valid email address" } ], "request_id": "req_abc123", "documentation_url": "https://api.example.com/docs/errors#VALIDATION_ERROR" } } ``` **Códigos de Error Estándar:** | Estado HTTP | Código de Error | Descripción | |-------------|------------------|-------------| | 400 | VALIDATION_ERROR | Falló la validación del request | | 401 | UNAUTHORIZED | Autenticación faltante o inválida | | 403 | FORBIDDEN | Autenticación válida pero permisos insuficientes | | 404 | NOT_FOUND | El recurso no existe | | 409 | CONFLICT | Conflicto de estado del recurso | | 422 | UNPROCESSABLE | Sintaxis válida pero error semántico | | 429 | RATE_LIMITED | Demasiadas solicitudes | | 500 | INTERNAL_ERROR | Error del servidor | ### 6. ESTRATEGIA DE VERSIONADO - Versionado por URL: `/v1/resources` - Opción de versionado por header: `API-Version: 2024-01-15` - Política de deprecación - Plantilla de guía de migración ### 7. DISEÑO DE PAGINACIÓN Elige y documenta: - Basada en offset: `?page=2&per_page=20` - Basada en cursor: `?cursor=eyJpZCI6MTAwfQ==` - Keyset: `?after_id=100` Incluye ventajas/desventajas del enfoque elegido. ### 8. FILTRADO Y BÚSQUEDA Diseña patrones de query: ``` GET /products?filter[category]=electronics GET /products?filter[price][gte]=100&filter[price][lte]=500 GET /products?search=keyword GET /products?status=active,pending ``` ### 9. RATE LIMITING - Niveles de rate limit (por plan/nivel de autenticación) - Headers a retornar: - `X-RateLimit-Limit` - `X-RateLimit-Remaining` - `X-RateLimit-Reset` - Header Retry-After en el código 429 ### 10. WEBHOOKS (si aplica) - Tipos de evento - Formato del payload - Verificación de firma - Política de reintentos ### 11. ESPECIFICACIÓN OPENAPI Genera YAML de OpenAPI 3.0 para los endpoints principales: ```yaml openapi: 3.0.0 info: title: [API Name] version: 1.0.0 paths: /[resource]: get: summary: List [resources] # ... complete specification ``` ### 12. CONSIDERACIONES DE SDK - Patrones de SDK recomendados - Nomenclatura idiomática para diferentes lenguajes - Expectativas de manejo de errores - Helpers de paginación Haz que todos los diseños sean consistentes, siguiendo estándares de la industria. Proporciona el razonamiento detrás de las decisiones de diseño. Incluye ejemplos con curl para los endpoints clave.

Iniciá sesión para ver el prompt completo

Continuar con:

Al iniciar sesión, aceptás nuestros Términos de uso y Política de privacidad

Uso

Este prompt está diseñado para usarse con coding. Copiá el contenido de arriba y pegalo en tu herramienta de IA preferida.

Para mejores resultados, personalizá los marcadores (indicados con corchetes o mayúsculas) con tus requisitos específicos.

Referencias

Categorías:coding| api| rest| backend

Discusión