Hoy en día se desarrollan servicios REST para multitud de propósitos:
- Desarrollo de aplicaciones móviles que necesitan un backend para consultar la información.
- Integración con servicios externos (Youtube, Twitter, CRM, etc).
- Aplicaciones desacopladas , como puede ser el caso de ContentaCMS + [ponga aquí su framework de JS preferido :D].
En estos casos de uso necesitamos organizar el listado de peticiones que se realizan para poder probarlas cuando sea necesario y además traspasar el conocimiento a miembros del equipo , clientes, o terceros.
Lo más común es realizar un documento donde se lista cada petición y se añaden toda la información necesaria para poder ser capaz de reproducir la misma petición en el entorno necesario. Es una solución muy práctica pero lo ideal es poder tener un entorno sandbox donde podamos ejecutar dichas peticiones, viendo su respuesta.
Existen una amplia variedad de herramientas para realizar peticiones contra servicios REST:
- cURL : comando con todo lo necesario para realizar peticiones REST. Realmente es todo lo que necesitas para probar servicios REST, pero puede llegar entorpecer a la hora de probar continuamente un servicio con diferentes argumentos . Aún así se recomienda tenerlo a mano al ser la herramienta más directa y flexible.
- Swagger: interfaz que a través de un archivo propio escrito en JSON permite hacer pruebas de cada endpoint. Además de ello permite exportar dichos endpoints a código para cada lenguaje.
- Postman: programa que te da un entorno de desarrollo para construir y ejecutar peticiones REST, y más.
- Advanced REST API client: cliente para aplicaciones REST potente, sucesor del Chrome REST Client.
- Librerías dedicadas en cada lenguaje, pero esto implica que quien deba probarlo tiene que poder ejecutar el código hecho en dicha librería.
En este artículo nos centraremos en Postman, la herramienta que hemos elegido para probar servicios REST. Podemos descargar Postman desde su página oficial. A continuación veremos los diferentes servicios que nos ofrece.
Creación y ejecución de peticiones REST
Nada más tener Postman instalado podemos crear nuestra primera petición.
Aquí podremos seleccionar lo siguiente:
- Método para realizar la petición.
- Autenticación (Basic Auth, Bearer, etc).
- URL a la que queremos llamar.
- Cabeceras, en la pestaña headers.
- Body de la petición.
Cada petición se puede guardar en colecciones. De esta forma podemos tener agrupadas todas las peticiones para una sola colección. Además de ello, podemos exportar la petición a código/línea de comandos (cURL, PHP, JS, Java...), clicando en la opción Code. Muy práctico para implementaciones/pruebas por línea de comandos.
Todas estas colecciones las podemos exportar para compartilas con quien necesitemos (clientes, compañeros de trabajo, comunidadm, etc).
Postman permite ejecutar diferentes scripts durante la ejecución de las peticiones. Estos snippets nos permitirán guardar variables, las cuales podemos usar en los tests de Postman.
Pre-request Script
Este script se ejecuta antes de hacer la petición y nos permite definir las variables que necesitemos. También nos permite realizar peticiones, en el caso de que necesitemos extraer variables de servicios externos.
Más información en la documentación oficial sobre Pre-request Scripts de Postman.
Tests
Se ejecutan tras realizar la petición. Este script nos valdrá tanto para comprobar que los valores que se reciben son correctos como para poder definir variables que puedan utilizar peticiones posteriores.
De esta forma podemos automatizar ciertas tareas repetitivas para las peticiones. Por ejemplo, si queremos primero crear un usuario y después hacer un login con dicho usuario, podemos preparar código que permita que las credenciales del usuario que se hayan creado en la primera petición se pasen como variables a la siguiente.
Más información sobre tests en Postman aquí.
Runners
Existe una utilidad llamada runners, la cual nos permite ejecutar todos los tests de una colección. Esto nos es muy práctico en casos en los que necesitemos comprobar el funcionamiento correcto de los endpoints. Por ejemplo, si desarrollamos una funcionalidad que puede estar envuelta en diferentes servicios, ejecutando el runner podremos confirmar que efectivamente todos los servicios funcionan correctamente.
Gestion de entornos
Postman nos permite declarar variables diferentes para cada entorno. Esto es muy práctico para poder probar las API en diferentes entornos donde las cambian diferentes factores como la URL, los usuarios de pruebas, el usuario y contraseña de Apache, etc.
Mocking
Esta funcionalidad permite generar un endpoint alojado en los servidores de Postman donde la respuesta se escribe a mano. Esto nos es muy útil cuando se ha desarrollado la arquitectura en JSON de los servicios rest pero no se han desarrollado aún los servicios. De está forma los clientes de la API (aplicaciones móviles por ejemplo), pueden empezar a trabajar utilizando el mock sin existir realmente.
Más información sobre crear mocks en la documentación oficial.
Importación / exportación
En postman se pueden importar las peticiones a partir de diferentes formatos (comandos curl, swagger, etc). Además se pueden importar colecciones de Postman que hayamos exportado previamente.
Conclusiones
Para poder tener disponibles las peticiones realizadas en una aplicación para realizar pruebas necesitamos una herramienta que nos ayude a organizarlo. Con Postman podemos administrar estas peticiones con utilidades que agilizan la labor, además de disponer de una amplia documentación.
Bonus - Documentar la API automáticamente
Hay un proyecto de GitHub, Postmanerator, que a partir de colecciones de Postman genera de forma automática la documentación de la API. Aquí tienes un ejemplo de su salida. De esta forma no solo tenemos la colección de llamadas a la API disponiblers para hacer pruebas mediatne Postman, sino que podemos generar una documentación limpia y clara que puede ser enviada a quien la necesite.
Recursos
- Documentación de Postman: https://www.getpostman.com/docs/v6/