Empiezo por el principio, aunque probablemente ya conozcas el concepto API. Sin embargo, es posible que seas, un gran apasionado de la tecnología, y hayas oído el término API, en innumerables ocasiones, y tengas una idea de que se trata. Una API, no es ni mas ni menos, que un interfaz de comunicación entre dos software. De esta forma podemos comunicar dos aplicaciones abstrayéndonos del lenguaje de programación. En particular, tratamos con APIs de servicios web. Estas APIs permite el intercambio de información entre un servicio web y una aplicación. Para este intercambio de información normalmente se utilizan dos formatos JSON y XML. Llegados a este punto nos queda aclarar que esto de API REST. API REST, no es ni mas ni menos, que un interfaz entre dos sistemas que utiliza HTTP para intercambiar datos o realizar operaciones. ¿Que es un cliente REST? y ¿para que quiero un cliente REST?
Un cliente REST no es ni mas ni menos que una aplicación que permite hacer consultas a una API REST. Y en cuanto al uso mas inmediato, es para realizar pruebas de funcionamiento de una API que o bien has realizado tu, o bien, es contra la que te vas a conectar.
Llegados a este comprenderás la importancia de disponer de un buen cliente REST en el caso de que quieras trabajar con diferentes APIs.
Insomnia un magnífico y organizado cliente REST
Insomnia es un cliente REST multiplataforma, con una interfaz clara y sencilla. Con funcionalidades que nos van a facilitar enormemente el trabajo. Algunas de estas funcionalidades son,
- Personalización. Insomnia es una aplicación altamente configurable y personalizable, para que se adapte a nuestras necesidades. Admite hasta doce temas diferentes, para que podamos adaptar la aplicación a nuestro entorno de escritorio o simplemente adecuarlo a nuestro gusto.
- Atajos de teclado. Sin duda si quieres ser realmente productivo, necesitas tener siempre los dedos pegados al teclado. Esto lo resuelve Insomnia con la definición de una veintena de atajos de teclado. Con estas acciones puedes, desde enviar una consulta hasta editar las cookies, pasando por cambiar el método HTTP.
- Importar y exportar. Nos permite importar y exportar nuestros datos de otras aplicaciones como Postman, HAR, Curl, Swagger. Incluso, si no es de una de estas, puedes tu mismo definir el formato para poder importar.
- Configuración proxy. Una de las características mas necesarias para un cliente REST, es, desde mi punto de vista, la posibilidad de configurar un proxy. En el caso de Insomnia, esto viene de serie.
- Admite complementos. La instalación de los complementos es realmente sencilla, sobre todo si se encuentran en npm. Tan solo tienes que poner el nombre del complemento e instalar, e Insomnia, se encarga de buscarlo e instalarlo. Para desinstalarlo, tan solo tienes que ir al directorio de los complementos y borrar el directorio correspondiente, y pulsar el botón
Reload Plugin List
. Así, por ejemplo, tiene un interesante complemento que permite generar datos aleatorios dentro del propio cliente, como pueden ser direcciones IP, nombres, etc… - Ayudas para la autentificación. Existe una importante variedad de sistemas y protocolos de autentificación hoy en día. Así por ejemplo, tenemos Basic, Digest, NTLM, API Keys, OAuth, HAWK, por citar algunos. Así, para trabajar con una determinada API REST, seguramente tendremos que enfrentarnos a uno de estos protocolos. El problema no solo radica en las diversidad de protocolos, sino también, en que cada uno es de su padre y de su madre. Sin embargo, Insomnia nos facilita una serie de herramientas que hace trivial la autentificación por algunos de estos protocolos, como Basic, Digest, OAuth 1.0, OAuth 2.0, Bearer, NNTLM, AWS IAM v4, HAWK.
- Variables generales o de entorno. Cuando hacemos diferentes consultas a una API, es muy habitual que determinados valores se repitan. Insomnia, nos permite crear variables para poder utilizarlas en diferentes consultas. Pero además nos permite definir sub entornos por cada entorno. Así, podemos definir en cada uno de estos sub entornos diferentes variables. Por ejemplo, podemos tener un sub entorno de producción y otro de desarrollo. De esta manera podemos cambiar fácilmente entre producción y desarrollo. Una vez definida las variables, podremos utilizarlas en cualquier parte dentro del entorno o sub entorno con tan solo utilizar el atajo de teclado
Ctrl + Espacio
. Además estas variables están establecidas con prioridades, de forma que la de un sub entorno sobreescibe la de un entorno, cuando ambas tienen el mismo nombre.
¿Para que utilizo Insomnia?
Al final, Insomnia, no es mas que una forma gráfica y sencilla de realizar consultas curl
contra una API. Pero, sobre todo, la ventaja reside en que todas las consultas las guardas en la propia aplicación, para poderlas utilizar posteriormente. Esto es una verdadera comodidad.
Antes de conocer los clientes REST, las consultas las probaba directamente desde la aplicación que estaba implementando. Para ello, creaba sencillos métodos, para que me ayudaran a probarlo. La otra opción que utilizan era recurrir a curl
.
Sin embargo, con independencia de una solución u otra, al final las consultas hay que repetirlas. Es por ello, que todas estas consultas almacenadas y organizadas siempre nos ayuda.
Crear una consulta
Como ejemplo, para que veas las posibilidades de un cliente REST como Insomnia, voy a utilizar el fantástico sitio JSON Placeholder. Esta página, nos permite realizar consultas, para comprobar el correcto funcionamiento de nuestra aplicación.
Para tenerlo todo organizado, vamos a crear una carpeta que se llamará JSONPlaceholder
. Para ello pulsaremos el botón +
y seleccionaremos la opción New Folder
.
A partir de aquí vamos a crear una consulta para obtener todos los posts
. Para ello solo tenemos que seleccionar la opción clic to add first request...
, le damos un nombre, posts
y seleccionamos el método GET
. En la parte superior escribimos la dirección y pulsamos Send
y ya lo tenemos,
Ahora podríamos hacer el resto con los otros recursos que JSON Placeholder, pone a nuestra disposición, comments
, albums
, photos
, todos
y users
. Sin embargo, vamos a crear una variable para la carpeta JSONPlaceholder
que nos ahorrará algo de trabajo, pero sobre todo mejorará la legibilidad de nuestro trabajo.
Si hacemos clic con el botón derecho del ratón sobre JSONPlaceholder
y seleccionamos la entrada de menú Environment
, entraremos dentro de la configuración de nuestra carpeta. Allí podemos crear una variable global, que llamaremos basic_url
, tal y como ves a continuación,
{ "basic_url": "https://jsonplaceholder.typicode.com" }
Esto nos permite utilizarlo posteriormente en nuestras consultas,
Si ahora quisiéramos hacer un consulta tipo POST
, para añadir un nuevo elemento, por ejemplo un user
, seleccionaríamos el método POST
. Además debemos añadir el contenido, que se corresponde con la primera pestaña debajo justo de la ruta, que seleccionaríamos en este caso a JSON
, tal y como ves en la siguiente captura de pantalla,
Problemas de uso
Al parecer con versiones anteriores de Insomnia ha habido algunos problemas con dos asuntos en particular, y que se resuelven fácilmente.
- El directorio
/tmp
tiene que permitir ejecución - Falta la dependencia
libcurl
.
Dicho esto, te recomiendo que primero hagas la instalación, y en caso de que tengas algún problema, revises estos dos conceptos. En mi caso particular, yo no he tenido ningún problema, con lo que supongo que se trata de
Instalación
Esta aplicación no se encuentra en los repositorios oficiales de Ubuntu. Sin embargo, la puedes instalar fácilmente ejecutando las siguientes órdenes en un terminal,
echo "deb https://dl.bintray.com/getinsomnia/Insomnia /" | sudo tee -a /etc/apt/sources.list.d/insomnia.list wget --quiet -O - https://insomnia.rest/keys/debian-public.key.asc | sudo apt-key add - sudo apt update sudo apt install insomnia
Tamibén lo puedes instalar como paquete snap, para ello, igualmente desde un terminal, tan solo tienes que ejecutar la orden,
sudo snap install insomnia
Por último otra opción de instalación a través de AppImage. En este caso solo tienes que descargar el paquete insomnia y posteriormente hacer doble clic sobre el archivo descargado para que comience a funcionar.
Como de costumbre, yo me decanto por la primera opción. Como he comentado en mas de una ocasión, el uso de los repositorios es vital para la seguridad de tu equipo. Y digo que es vital, porque te permite tener tu equipo actualizado siempre con las últimas versiones estables de una aplicación.
Conclusión
Actualmente, Insomnia, se ha convertido en mi cliente REST por defecto, y por mérito propio. Es sencillo, intuitivo, pero sobre todo, en mi caso, me ayuda a organizar las consultas. Y no tener todo el trabajo desperdigado. Es decir, se trata de una herramienta especialmente productiva.
Espero que con los ejemplos que he puesto, te hayas hecho una buena idea del funcionamiento, y de las posibilidades de un cliente REST como Insomnia.
Más información,