Explorando Hurl, una alternativa de línea de comandos a Postman

Los clientes de API basados ​​en GUI, como Postman e Insomnia, han ganado popularidad con el tiempo. A pesar de ello, diversas encuestas anuales a desarrolladores muestran que un gran porcentaje de ellos, ingenieros de control de calidad y automatización, y testers de API aún recurren a la línea de comandos para probar sus API.

Si eres un desarrollador que prefiere interactuar con las API mediante la línea de comandos, Hurl es una excelente alternativa a Postman que mejora la experiencia de usuario (DX) al trabajar con API mediante la línea de comandos. En este artículo, explicaremos a fondo la herramienta Hurl, sus ventajas únicas y cómo usarla.

Table
  1. ¿Qué es Hurl?
  2. ¿Por qué utilizar Hurl?
    1. Evaluación de Hurl como alternativa a Postman: Tabla comparativa
  3. Demostrando las características y beneficios de Hurl en acción
    1. Uso de afirmaciones de Hurl en respuestas JSON
    2. Cómo agregar Hurl a su pipeline de CI/CD
  4. Conclusión

¿Qué es Hurl?

Hurl es una herramienta de línea de comandos que permite a los desarrolladores ejecutar y probar solicitudes HTTP directamente desde la línea de comandos. Su enfoque basado en CLI ofrece una alternativa ligera a herramientas basadas en GUI como Postman. Hurl admite API implementadas mediante diversos protocolos, como REST, GraphQL y SOAP.

En esencia, Hurl utiliza la legendaria herramienta CLI cURL para transferencias HTTP. Por ello, comparte varias similitudes con cURL, incluyendo su nombre derivado de cURL y la compatibilidad con sus opciones.

Una guía para Deno.cron

Hurl es compatible con una amplia variedad de sistemas operativos, como Windows, Linux y macOS. Como herramienta CLI, Hurl también está disponible para su uso en pipelines de Integración Continua (CI).

Todas las solicitudes HTTP que desea que Hurl ejecute se almacenan en archivos con la .hurlextensión . Cada URL de solicitud dentro de un archivo Hurl se denomina entrada. Cada entrada contiene al menos el método de solicitud y la URL.

Hurl admite múltiples entradas de solicitud dentro de un solo archivo y las ejecuta secuencialmente al ejecutarse. Además, Hurl permite la coincidencia de múltiples .hurlarchivos para su ejecución mediante expresiones regulares. Verá las ventajas de la coincidencia de múltiples archivos durante las demostraciones de código más adelante.

Un archivo Hurl básico contiene al menos una entrada URL, que Hurl validará, como se muestra en el siguiente bloque de código. Al ejecutarse, Hurl realizará una solicitud GET a la API de Rick y Morty para obtener todos los personajes e imprimirlos:

Un análisis UX de Arc, Opera y Edge: El futuro de las interfaces de los navegadores
OBTENER https://rickandmortyapi.com/api

La ejecución del comando anterior debería generar una respuesta de API como la siguiente:

Hurl genera la respuesta de la API por defecto. Por ello, puedes manipularla de diversas maneras, como redirigirla a otra herramienta como jq para embellecer el resultado JSON.

Si lo ha jqinstalado, al ejecutar el siguiente comando se utilizará el operador de tubería de shell |para pasar la salida del cuerpo de respuesta de Hurl jqpara un mejor formato:

personajes de lanzamiento.lanzamiento | jq

Como puede ver a continuación, los datos están formateados de una manera mucho más legible que la salida que vimos antes:

Manejo de fechas en JavaScript con Tempo

A medida que aumentan sus requisitos de prueba, Hurl le brinda la posibilidad de expandir su archivo Hurl para probar múltiples URL y validar sus respuestas, códigos de estado e incluso encabezados.

¿Por qué utilizar Hurl?

A diferencia de otros clientes de API como Postman, Hurl es completamente de código abierto, gratuito y está impulsado por la comunidad. Aprovecha cURL para mejorar la experiencia de trabajar con API desde la terminal mediante una sintaxis de texto plano y ofrece a los desarrolladores gran flexibilidad para ajustar y personalizar sus solicitudes de API.

Hurl ofrece una herramienta muy liviana, portátil y fácil de instalar que puedes usar en entornos de desarrollo donde los recursos del sistema o de almacenamiento son limitados, como entornos virtuales basados ​​en la nube o estaciones de trabajo de servidor.

Probar tu API mediante una herramienta CLI te permite automatizar los pasos y evitar tareas repetitivas al realizar cambios en tu API. Hurl es compatible con GitHub Actions y BitBucket, lo que permite a los desarrolladores incluir la ejecución de sus pruebas Hurl en sus pipelines de CI/CD.

Cómo hablar con las partes interesadas como líder de UX

Evaluación de Hurl como alternativa a Postman: Tabla comparativa

Si está decidiendo si utilizar un cliente API basado en GUI como Postman o una herramienta de línea de comandos como Hurl, la siguiente tabla de comparación de alto nivel puede ayudarle en su elección:

Lanzar Cartero
Precios Hurl es un software gratuito y de código abierto, sin niveles de precios que restrinjan ciertas funciones. Postman es un software de pago y no de código abierto. Sin embargo, cuenta con otras herramientas gratuitas de código abierto, como la CLI de Newman y generadores de código.
Usar Hurl está completamente basado en la línea de comandos y no ofrece soporte para probar API a través de un navegador web o una aplicación de escritorio. Postman ofrece un cliente de navegador web y de escritorio para realizar pruebas de API. La CLI de Newman de Postman permite realizar pruebas de API mediante la línea de comandos.
Curva de aprendizaje Hurl tiene una curva de aprendizaje pronunciada para usuarios no técnicos, ya que es necesario aprender sus conceptos y sintaxis. Postman es más adecuado para usuarios no técnicos ya que la GUI facilita la prueba de API.
Complejidad Hurl es menos complejo de comenzar a utilizar ya que no tiene un proceso de incorporación. A menudo, poner en funcionamiento Postman es bastante complejo, ya que le solicita que cree una cuenta, cree un espacio de trabajo para el proyecto y también configure la CLI cuando se utiliza dentro de flujos de trabajo de CI/CD.
Privacidad de datos Hurl no recopila ni almacena información de usuarios ni de equipos. Los detalles adicionales de su API se almacenan dentro del proyecto como variables de entorno en formato de pares clave-valor. Postman recopila datos del usuario y conserva sus preferencias de prueba, archivos binarios y variables de entorno fuera de su proyecto.

Llegados a este punto, ya conoces la herramienta Hurl y las ventajas que ofrece a los desarrolladores que disfrutan realizando pruebas de API a través de su CLI. También hemos analizado algunas desventajas que debes tener en cuenta antes de adentrarte en Hurl, como su curva de aprendizaje, especialmente para principiantes.

Si estás dispuesto a dedicar tiempo y esfuerzo a familiarizarte con Hurl, podría ser una herramienta excelente y poderosa para tu desarrollo. Procedamos a usar Hurl en un proyecto de demostración.

Demostrando las características y beneficios de Hurl en acción

Veamos los beneficios de Hurl en acción al usarlo para probar la API pública de Rick and Morty. Probaremos los endpoints REST y GraphQL del servicio Rick and Morty, junto con los elementos del sitio web frontend que muestran todos los personajes y episodios de RickandMorty.

Hurl proporciona varias funciones para que los desarrolladores realicen afirmaciones implícitas y explícitas en sus respuestas de API.



Para las API que devuelven datos en formato JSON, la aserción JSONPath permite a los desarrolladores explorar un objeto de respuesta y comprobar sus valores. Por otro lado, los desarrolladores que prueban servicios que devuelven datos en formato XML deben usar la aserción XPath.

Uso de afirmaciones de Hurl en respuestas JSON

Ejecute el siguiente comando para crear una carpeta llamada RickAndMortyHurl:

mkdir RickAndMortyHurl

También puedes crear manualmente la carpeta con el nombre que prefieras en tu computadora. Esta carpeta almacenará los archivos Hurl para probar la API de Rick y Morty.

Crea tu primer archivo Hurl con el nombre characters.hurldentro de la carpeta del proyecto y agrega el contenido del siguiente bloque de código para expandir el primer ejemplo de RickAndMorty:

OBTENER https://rickandmortyapi.com/api/characterHTTP 200[Afirmaciones]jsonpath "$.info.count" existsjsonpath "$.info.pages" existsjsonpath "$.results" existsjsonpath "$.results" count = 20

El código anterior indica a Hurl que realice una solicitud GET al /characterendpoint de la API de Rick y Morty y espere solo un código de estado de respuesta 200. El código también contiene un Assertsbloque que usa explícitamente la jsonpathaserción para comprobar si existen ciertas propiedades en el objeto de información, así como si los objetos del resultsarray son iguales o mayores que 20.

Hurl permite personalizar la salida de ejecución aplicando sus opciones de depuración al comando. En este caso, se recomienda conocer más sobre la ejecución que sobre la respuesta de la API. Por lo tanto, se pueden aplicar las opciones de depuración verbosey no-outputal comando.

Ejecute lo siguiente para ejecutar el characters.hurlarchivo en modo detallado sin imprimir la respuesta JSON de la API de Rick y Morty:

lanzar --verbose --test caracteres.hurl

Como se muestra en la siguiente imagen, Hurl genera más detalles en el modo detallado sobre la solicitud de API que se realiza en lugar del cuerpo de la respuesta de API:

Si alguna de las afirmaciones falla, Hurl imprimirá la línea exacta que falla con los valores recibidos y esperados para su seguimiento de pila y pausará la ejecución del archivo.

Para probar, cambie cualquiera de los valores de predicado dentro del characters.hurlarchivo y ejecute el archivo nuevamente.

La siguiente imagen muestra el seguimiento de la pila de Hurl cuando el valor de recuento esperado de los objetos dentro de la matriz de resultados es mayor que el valor real obtenido después de la solicitud de API:

De manera similar a la creación de afirmaciones de Hurl usando jsonpath para datos JSON, Hurl también le proporciona XPath para capturar datos de respuestas XML.

Antes de empezar a escribir las pruebas, abre el sitio web de Rick y Morty para ver su contenido textual. Deberías ver algo como esto, con texto grande y una cuadrícula de personajes aleatorios de Rick y Morty:

Teniendo en cuenta que no tenemos acceso al código base del sitio web porque no somos sus desarrolladores, podemos entender la estructura HTML detrás de él utilizando el elemento Web Inspector:

Al inspeccionar los elementos HTML presentes en la página, observará que el texto grande es el único elemento H1 en la página y las tarjetas de personajes de Rick y Morty están dentro de un elemento de artículo.

Conocer los elementos y sus atributos es importante al probar datos XML, ya que a menudo necesitará filtrar estos elementos específicos antes de ejecutar sus afirmaciones.

Cree otro archivo hurl con el nombre rickandmorty-website.hurldentro del directorio de su proyecto Hurl para almacenar la entrada para la prueba de datos XML.

Agregue el contenido del siguiente bloque de código a su rickandmorty-website.hurlarchivo para indicarle a Hurl que realice una solicitud a la página web de Rick y Morty y ejecute consultas en sus elementos XML:

# rickandmorty-website.hurl GET https://rickandmortyapi.comHTTP 200[Afirmaciones]xpath "//h1" existexpath "normalize-space(//h1)" contiene "La API de Rick y Morty"xpath "//sección" recuento == 2xpath "//artículo" recuento == 6

El bloque de afirmaciones en el bloque de código anterior le indicará a Hurl que valide que el sitio web de Rick y Morty pase las siguientes condiciones:

  • Tiene al menos un elemento H1 en el DOM
  • El elemento H1 contiene el texto “La API de Rick y Morty”
  • Tiene dos elementos de sección y seis elementos de artículo, cada uno para seis tarjetas de personajes de Rick y Morty.

Ejecute el siguiente comando para ejecutar las pruebas del sitio web de Rick y Morty:

lanzar rickandmorty-website.hurl --test

Una vez que el archivo de prueba se ejecute correctamente, debería ver el resultado en su terminal:

Llegados a este punto, ya está familiarizado con la ejecución de pruebas con Hurl. Veamos cómo automatizar la ejecución de pruebas dentro de una canalización de CI/CD como GitHub Actions.

Cómo agregar Hurl a su pipeline de CI/CD

Además de usar conjuntos de pruebas unitarias y de integración en pipelines de CI, los desarrolladores suelen querer probar sus endpoints de API directamente con valores reales para garantizar que los cuerpos de respuesta cumplan con los resultados esperados. Si necesitas esto, ¡Hurl es la opción perfecta!

Al ser un cliente API muy ligero y rápido, Hurl es la opción ideal para pipelines de CI con recursos limitados. Los desarrolladores pueden usar scripts para instalar el binario de Hurl en sus pipelines de CI o mediante acciones gestionadas por la comunidad, como install-hurl-cross-platformy setup-hurl.

Para usar GitHub Actions, debes crear la especificación de tu acción en un .ymlarchivo dentro de una .githubcarpeta raíz y agregarle el siguiente código. En un repositorio, GitHub Actions usará la siguiente especificación para ejecutar un flujo de trabajo con los trabajos definidos cada vez que se abra o vuelva a abrir una solicitud de extracción:

.github/ci.ymlname: RickAndMorty CI Runon: pull_request: tipos: - abierto - reabiertojobs: compilación: se ejecuta en: ubuntu-latest permisos: contenido: leer pasos: - nombre: Checkout usos: acciones/checkout@v4 - nombre: Prueba de integración de Hurl ejecutada: | curl --location --remote-name https://github.com/Orange-OpenSource/hurl/releases/download/4.0.0/hurl_4.0.0_amd64.deb sudo dpkg -i hurl_4.0.0_amd64.deb hurl --test *.hurl --variable URL=https://rickandmortyapi.com

Si bien el flujo de trabajo anterior no es ideal (ya que se prueba contra una aplicación externa y no contra los cambios actuales en la solicitud de extracción), le brinda una idea de cómo configurar su flujo de trabajo.

Al revisar el ci.ymlarchivo, observará que el trabajo de compilación usa cURL para descargar el binario de Hurl V4 antes de instalarlo con privilegios de usuario root. Con Hurl instalado, el trabajo ejecuta todos los archivos de Hurl usando un comodín *.hurly pasa la URL de destino como variable para ejecutar las solicitudes.

El uso de dos llaves alrededor de una palabra (como {{test_var}}) es la sintaxis para usar variables en archivos Hurl.

Las variables se utilizan para almacenar y reutilizar ciertos valores o modificarlos dinámicamente, como se haría al ejecutar pruebas en diferentes entornos de aplicación. También permiten leer credenciales confidenciales, como claves API y tokens, en los archivos Hurl sin necesidad de codificarlos.

Para mejorar el archivo de flujo de trabajo anterior, deberá crear un flujo de vista previa de implementación en su acción de GitHub y reemplazar la URL del sitio web de Rick y Morty con su URL de vista previa de implementación.

Conclusión

Hurl presenta una herramienta ligera, flexible y con múltiples funciones para probar tus API directamente desde terminales, pipelines de CI/CD o entornos con recursos limitados. Con Hurl, los desarrolladores que disfrutan de la línea de comandos y las terminales ya no se sentirán excluidos al probar API ni obligados a usar clientes API GUI.

En este tutorial, exploramos las ventajas de Hurl, lo evaluamos como alternativa a Postman y repasamos algunos ejemplos para mostrar sus funciones en acción. Si tienes alguna pregunta, no dudes en dejarla en los comentarios.

Empieza ahora

Si quieres conocer otros artículos parecidos a Explorando Hurl, una alternativa de línea de comandos a Postman puedes visitar la categoría Guias.

Entradas Relacionadas