He configurado Swagger UI en tu API Express.js con TypeScript para generar documentación automática e interactiva.
http://localhost:3000/api-docs
- Interfaz web completa para probar endpoints
- Autenticación integrada con Bearer Token
- Ejemplos de requests y responses
- Esquemas de datos detallados
http://localhost:3000/api-docs.json
- Especificación OpenAPI 3.0 en formato JSON
- Útil para generar clientes automáticos
- Importable a otras herramientas (Postman, Insomnia)
- Esquema: Bearer Token
- Formato:
Authorization: Bearer token_userId_timestamp - Obtención: Endpoint
POST /api/auth/login
- ✅
POST /api/auth/login- Iniciar sesión - ✅
POST /api/auth/logout- Cerrar sesión - ✅
GET /api/auth/me- Información del usuario actual
- ✅
GET /api/products- Listar productos (con filtros) - ✅
POST /api/products- Crear producto - 🔄
GET /api/products/{id}- Pendiente - 🔄
PUT /api/products/{id}- Pendiente - 🔄
PATCH /api/products/{id}/stock- Pendiente - 🔄
DELETE /api/products/{id}- Pendiente
- 🔄 Pendiente de documentar
{
"id": 1,
"name": "string",
"description": "string",
"price": 99.99,
"stock": 10,
"category": "Tecnología",
"active": true,
"createdAt": "2025-08-01T10:00:00.000Z",
"updatedAt": "2025-08-01T10:00:00.000Z"
}{
"id": 1,
"name": "string",
"email": "user@example.com",
"createdAt": "2025-08-01T10:00:00.000Z"
}{
"email": "juan@example.com",
"password": "123456"
}- Ir a
http://localhost:3000/api-docs - Explorar los endpoints disponibles
- Ver esquemas de datos en la sección "Schemas"
- Hacer click en "Authorize" 🔒
- Obtener token del endpoint
/api/auth/login - Ingresar:
Bearer token_1_1234567890 - Hacer click en "Authorize"
- Expandir cualquier endpoint
- Hacer click en "Try it out"
- Completar los parámetros necesarios
- Hacer click en "Execute"
- Ver la respuesta en tiempo real
- Configuración principal de Swagger
- Definición de esquemas
- Configuración de seguridad
- Metadatos de la API
/**
* @swagger
* /api/products:
* get:
* tags: [Productos]
* summary: Obtener todos los productos
* security:
* - BearerAuth: []
* responses:
* 200:
* description: Lista de productos
*/En src/config/swagger.ts:
swaggerUi.setup(specs, {
customCss: '.swagger-ui .topbar { display: none }',
customSiteTitle: 'Mi API Documentation',
swaggerOptions: {
docExpansion: 'none', // none, list, full
filter: true,
showRequestDuration: true
}
})- Agregar anotaciones
@swaggeren las rutas - Seguir el formato OpenAPI 3.0
- El servidor se actualiza automáticamente
curl http://localhost:3000/api-docs.json | jq '.'npm install -g swagger-jsdoc-cli
swagger-jsdoc --validate src/config/swagger.ts- Importar desde:
http://localhost:3000/api-docs.json - Configurar autenticación Bearer Token
- Usar colección generada automáticamente
- File → Import → URL
- Ingresar:
http://localhost:3000/api-docs.json - Configurar Bearer Token en Environment
# Generar cliente JavaScript
npm install @openapitools/openapi-generator-cli
openapi-generator-cli generate -i http://localhost:3000/api-docs.json -g javascript -o ./client- Completar documentación de todos los endpoints
- Agregar ejemplos más detallados
- Incluir códigos de error específicos
- Documentar modelos de respuesta
- Agregar validaciones de esquemas
- Verificar que el servidor esté en puerto 3000
- Revisar logs de consola por errores
- Verificar que las rutas estén en
apisdel config
- Verificar anotaciones
@swaggeren archivos de rutas - Verificar que las rutas estén incluidas en
apis - Reiniciar el servidor
- Verificar formato:
Bearer token_userId_timestamp - Verificar que el token sea válido
- Revisar configuración de
securitySchemes
🎉 ¡Swagger está completamente configurado y funcionando!
Accede a http://localhost:3000/api-docs para ver tu documentación interactiva.