Postman: gestiona y construye tus APIs rápidamente

¿Quién no ha sufrido el mundo de las APIs en sus huesos? Si eres desarrollador web, y sobre todo te has enfocado en desarrollar tus proyectos en arquitecturas de microservicios, seguro que te has visto en la necesidad de gestionar múltiples APIs (ya sean propias de tu sistema o integraciones con aplicaciones de terceros) que deben ser mantenidas de la manera más rápida y eficiente posible.

En el post de hoy vamos a introducirte en el mundo de Postman, una herramienta que si no la conocías, hará del trabajo con APIs algo apasionante.

¿Qué es Postman?

Postman surgió originariamente como una extensión para el navegador Google Chrome. A día de hoy dispone de aplicaciones nativas para MAC y Windows y están trabajando en una aplicación nativa para Linux (disponible en versión beta).

Está compuesto por diferentes herramientas y utilidades gratuitas (en la versión free) que permiten realizar tareas diferentes dentro del mundo API REST: creación de peticiones a APIs internas o de terceros, elaboración de tests para validar el comportamiento de APIs, posibilidad de crear entornos de trabajo diferentes (con variables globales y locales), y todo ello con la posibilidad de ser compartido con otros compañeros del equipo de manera gratuita (exportación de toda esta información mediante URL en formato JSON).

Además, dispone de un modo cloud colaborativo (de pago) para que equipos de trabajo puedan desarrollar entre todos colecciones para APIs sincronizadas en la nube para una integración más inmediata y sincronizada.

Entremos en materia: colecciones de APIs

El interés fundamental de Postman es que lo utilicemos como una herramienta para hacer peticiones a APIs y generar colecciones de peticiones que nos permitan probarlas de una manera rápida y sencilla.

Las colecciones son carpetas donde se almacenan las peticiones y que permiten ser estructuradas por recursos, módulos o como el equipo lo desee. En la siguiente imagen vemos un ejemplo de estructura de una colección de prueba de uno de los proyectos desarrollados en Paradigma: Security Hub.

Como vemos, se puede definir el tipo de petición (GET, POST, etc.), tokens de autenticación, cabeceras asociadas a la petición, etc., todo de una manera muy sencilla.

Todas las llamadas almacenadas en nuestra colección, pueden ser exportadas a múltiples lenguajes haciendo clic en el apartado Generate Code que podéis ver en la captura anterior. Os dejo un ejemplo de cómo exporta una llamada GET para poder ser utilizada automáticamente desde código Python:

import requests

url = "http://localhost:8000/api/customers/"

headers = {
    'content-type': "application/json",
    'cache-control': "no-cache",
    'postman-token': "1432412f-9bc5-be13-a8a4-6f93e31feba4"
    }

response = requests.request("POST", url, headers=headers)

print(response.text)

Este snippet de código permite ejecutar la petición desde una aplicación Python tal cual la ejecuta Postman desde su interfaz, pintando la respuesta del servidor por la consola.

Entornos de trabajo

Uno de los puntos más potentes de Postman, desde mi punto de vista, es la posibilidad de definir todas las variables que necesites y clasificarlas por entornos de trabajo. Esto es muy útil cuando tienes diferentes proyectos o cuando necesitas configurar múltiples entornos para un mismo proyecto (por ejemplo, diferentes cabeceras, URLs de cada uno de los entornos de trabajo – local, preproducción o incluso producción, etc.).

Para configurar los entornos y sus variables, verás que en la esquina superior derecha de la interfaz hay un desplegable en el que se puede leer “No environments”. Si haces clic en el botón de ajustes que está al lado, aparece una opción llamada “Manage environments” donde se pueden configurar cada uno de ellos:

Una vez configuradas, su uso en cualquier llamada y en cualquier colección es muy simple. Si por ejemplo definimos la url del recurso con el nombre host_url como variable de entorno (o global), puedes utilizar esta variable escribiendo la clave entre dobles llaves. Por ejemplo:

De esta manera, es muy simple cambiar la URL de todas las llamadas definidas en la colección (únicamente deberás seleccionar el entorno correspondiente).

Desarrolla tests de APIs en pocos minutos y automatízalos en tu Jenkins

Otra de las funcionalidades interesantes, sobre todo para los QAs de los equipos, es la posibilidad de automatizar de una manera sencilla tests de integración para nuestros proyectos. En cada una de las llamadas, Postman nos proporciona una pestaña tests en la que poder configurar los tests que se quieran.

Postman se apoya en código Javascript para programar sus tests. ¿No sabes cómo programar en JS? No te preocupes, Postman se ha preocupado de ofrecer un conjunto de snippets de tests que permiten hacer que desarrollar tus tests no sea más que un juego de niños. En el siguiente enlace puedes ver más documentación al respecto de los tests.

Uno de los aspectos más demandados, y que Postman ha desarrollado hace no mucho, es la posibilidad de automatizar los tests para que nuestro software IC ejecute las pruebas dentro del flow de construcción de nuevas versiones. Todo aquel que esté interesado, puede visitar el blog de Postman, donde se cuenta paso a paso cómo integrarlos en Jenkins.

Documenta tu API

En cada colección que generes en tu API, Postman da la posibilidad de generar una documentación web de acceso libre donde pinta todas las llamadas con los headers definidos y, justo al lado, un ejemplo de la llamada para ser probada inmediatamente con cURL:

Para ver la documentación, hacer clic en la colección en el símbolo “>” y en el menú que aparece a la derecha, hacer clic en View Docs:

Conclusiones

Sin duda Postman es una herramienta que se convierte en indispensable desde la primera vez que la utilizas. Como ayuda al desarrollo, permite al equipo mantener una colección actualizada de todas las llamadas de tu servicio o una colección que permita probar rápidamente la integración con APIs de terceros. A día de hoy, existen aplicaciones nativas de Postman para Windows, OSX y Linux (beta), por lo que cualquier desarrollador puede beneficiarse de sus ventajas.

Además, la posibilidad de exportar toda la colección en un fichero .json permite al equipo versionar la colección en el sistema de control de versiones, y que sea un documento colaborativo que ayude a todos los componentes del equipo a tener su colección actualizada de una manera inmediata.

¿Lo has utilizado? ¿Qué opinas sobre él? ¿Te animas a utilizarlo y dejarnos tus impresiones?

Escribe un comentario