Cómo Crear Swagger con Swagger UI para API en JavaScript

Introducción a Swagger y su Importancia en las APIs

En la actualidad, la creación de APIs es una parte fundamental del desarrollo web y móvil. Con un ecosistema de tecnologías en constante evolución, es esencial para los desarrolladores no solo construir APIs funcionales, sino también documentarlas de manera efectiva. Aquí es donde entra en juego Swagger, una herramienta poderosa que facilita la creación de documentación interactiva para APIs RESTful. Cuando implementas Swagger en tu flujo de trabajo, no solo creas una API más accesible, sino que también puedes mejorar la colaboración entre desarrolladores y facilitar la comunicación con los consumidores de la API.

Swagger permite a los desarrolladores visualizar y probar las funcionalidades de la API sin necesidad de implementar un cliente. Utilizando el Swagger UI, puedes proporcionar a los usuarios una interfaz gráfica que les permite interactuar directamente con la API. Esto no solo hace que la API sea más amigable, sino que también permite a los desarrolladores observar cómo funciona la API en tiempo real, identificando rápidamente cualquier problema o fallo potencial.

En este artículo, exploraremos cómo crear documentación Swagger utilizando Swagger UI aplicable a APIs desarrolladas en JavaScript. Aprenderemos a definir las especificaciones de la API usando OpenAPI (anteriormente conocido como Swagger Specification) y a integrar Swagger UI en nuestros proyectos.

Configurando tu Proyecto JavaScript para Swagger

Antes de sumergirnos en el proceso de creación de Swagger, primero debemos configurar un proyecto de ejemplo. Si ya tienes un proyecto JavaScript existente que expone una API RESTful, puedes integrar Swagger fácilmente. En caso contrario, crearemos un simple servidor utilizando Node.js y Express para nuestra API.

Primero, asegurémonos de tener Node.js y npm instalados en nuestro sistema. Luego, iniciaremos un nuevo proyecto ejecutando los siguientes comandos en tu terminal:

mkdir swagger-api-example
cd swagger-api-example
npm init -y
npm install express swagger-ui-express yamljs

Con estos comandos, hemos creado una carpeta para nuestro proyecto y hemos instalado las dependencias necesarias: Express para manejar nuestro servidor y swagger-ui-express para la integración de Swagger UI. El paquete yamljs se utilizará para cargar la documentación en formato YAML.

Definiendo la Documentación de la API con OpenAPI

Swagger utiliza la especificación OpenAPI para definir la estructura de la API y sus endpoints. A continuación, vamos a crear un archivo llamado api.yaml que contendrá nuestra definición OpenAPI. Este archivo describirá los endpoints de nuestra API, sus parámetros, respuestas y otros detalles relevantes.

openapi: 3.0.0
info:
title: API de Ejemplo
version: '1.0'
paths:
/users:
get:
summary: Listar usuarios
responses:
'200':
description: Éxito
content:
application/json:
schema:
type: array
items:
type: object
properties:
id:
type: integer
name:
type: string

En este ejemplo, hemos definido un endpoint sencillo que permite listar usuarios. La especificación incluye información general sobre la API, el título y la versión, así como detalles sobre el endpoint /users. Para que nuestra API sea útil, podemos continuar añadiendo más endpoints y detalles según sea necesario.

La definición puede ampliarse aún más para incluir métodos POST, PUT y DELETE, así como parámetros adicionales de consulta y cuerpo, proporcionando así un panorama completo de las capacidades de la API.

Configurando el Servidor Express y Swagger UI

Ahora que tenemos nuestra definición API lista, vamos a implementar nuestro servidor Express y a integrar Swagger UI. Crea un archivo llamado server.js en la raíz de tu proyecto y añade el siguiente código:

const express = require('express');
const swaggerUi = require('swagger-ui-express');
const YAML = require('yamljs');

const app = express();
const swaggerDocument = YAML.load('./api.yaml');

app.use('/api-docs', swaggerUi.serve, swaggerUi.setup(swaggerDocument));

app.get('/users', (req, res) => {
res.json([{ id: 1, name: 'Juan' }, { id: 2, name: 'Maria' }]);
});

const PORT = 3000;
app.listen(PORT, () => {
console.log(`Servidor corriendo en http://localhost:${PORT}`);
});

En este fragmento, importamos las bibliotecas requeridas y configuramos un servidor básico. Utilizamos la función swaggerUi.setup() para inicializar el Swagger UI utilizando la especificación definida en nuestro archivo api.yaml. Además, hemos añadido un endpoint que devuelve una lista de usuarios. Este será útil para probar nuestra colección de APIs a través del Swagger UI.

Probando la API y la Documentación Interactiva

Una vez que tu servidor esté en marcha, puedes acceder a la documentación interactiva de tu API abriendo un navegador y dirigiéndote a http://localhost:3000/api-docs. Ahí podrás ver todos los endpoints definidos en tu archivo YAML, junto con la opción de probarlos directamente desde la interfaz de Swagger UI.

Al hacer clic en el endpoint /users y pulsar el botón para ejecutarlo, obtendrás una respuesta JSON que muestra la lista de usuarios. Esto es una demostración práctica de cómo Swagger UI no solo documenta la API, sino que también permite a los usuarios interactuar con ella de manera eficiente.

Si decides expandir los endpoints o modificar la lógica dentro de ellos, puedes hacerlo fácilmente en el servidor y actualizar la definición en el archivo YAML para reflejar los cambios. Esto mantendrá tu documentación actualizada y en sincronización con tus implementaciones de código.

Mejorando la Documentación con Más Detalles

A medida que tu API crece en complejidad, es recomendable enriquecer la documentación proporcionada por Swagger. Puedes añadir descripciones detalladas para cada endpoint, parámetros de consulta, return types, y códigos de error esperados. Esto ofrecerá a los usuarios de tu API una mejor comprensión de cómo pueden interactuar con tus servicios.

Por ejemplo, podrías añadir un endpoint para crear un nuevo usuario, enviando un objeto con propiedades name y email. Tu especificación OpenAPI podría verse así:

  /users:
post:
summary: Crear un nuevo usuario
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
name:
type: string
email:
type: string
responses:
'201':
description: Usuario creado exitosamente
'400':
description: Error de validación

Con esta definición, incluso los desarrolladores que consumen tu API podrán entender claramente qué datos deben enviar para crear un nuevo usuario, así como lo que se puede esperar en términos de respuestas e incluso errores potenciales.

Conclusión: Potenciando tus APIs con Swagger

Implementar Swagger y Swagger UI para documentar tus APIs en JavaScript proporciona una manera poderosa de mejorar la usabilidad y la accesibilidad de tus servicios. No solo haces que la API sea más amigable para los desarrolladores, sino que también facilitas las pruebas y el consumo de las funcionalidades ofrecidas.

En un entorno colaborativo donde múltiples desarrolladores pueden trabajar en diferentes partes de un proyecto, una buena documentación se convierte en un activo invaluable. Swagger permite mantener esa documentación fácil de entender y al mismo tiempo ofrece una forma interactiva de explorar la API.

A medida que continúes construyendo tu aplicación y añadiendo nuevas características, recuerda que mantener tu documentación al día es tan importante como el código mismo. Con las herramientas adecuadas, como Swagger, puedes asegurarte de que tu API no solo sea potente, sino también amigable para los desarrolladores que trabajarán con ella.

Scroll to Top