Realizar peticiones a APIs con herramientas de línea comandos e interfaz gráfica

Escrito por picodotdev el .
planeta-codigo programacion software
Enlace permanente Comentarios

El comando curl es la herramienta de línea de comandos para realizar cualquier petición que requiera probar un endpoint de una API o web que utilice el protocolo HTTP, tiene opciones para cualquier petición que sea requerida. Aunque curl es muy versátil y completa es una herramienta de línea de comandos sin algunas otras funcionalidades que las aplicaciones con interfaz gráfica son capaces de proporcionar. Postman es una aplicación con interfaz gráfica que cubre parte de las funcionalidades de curl y la mayoría que habitualmente un desarrollador necesita para probar una API, permite guardar colecciones y compartirlas con otros miembros de equipo de desarrollo asi como entornos y otras funcionalidades. Postman es la herramienta más conocida en su categoría y tiene una licencia comercial en base al numero de miembros de equipo que no es barata. Finalmente, Hoppscotch es una herramienta alternativa y equivalente a Postman de código abierto que no tiene coste de licencia y ofrece la mayoría de funcionalidades importantes como para sustituir a Postman.

Hoppscotch

Las aplicaciones monolíticas son más simples y más sencillas de programar, la llamada de un módulo a otro de una aplicación consiste simplemente en una invocación de un método, sin embargo tiene sus propios problemas.

Las aplicaciones compuestas por múltiples microservicios, algunos de esos microservicios publica una API para que la invoquen otros microservicios. Los microservicios se comunican mediante llamadas remotas a través de la red, habitualmente utilizando el protocolo HTTP y REST aunque también es posible utilizar GraphQL y si se prefiere una API más RPC con gRPC.

Para desarrollar y probar pero también para conocer los datos devueltos por un microservicio en alguna de sus endpoints que expone en su API es muy útil utilizar alguna de las siguientes herramientas para hacer peticiones directamente al servicio sin tener que usar la interfaz web que utiliza el usuario hasta llegar al punto donde se realiza la petición.

El comando curl

La herramienta de línea de comandos curl permite realizar cualquier operación y obtener cualquier detalle tanto de la petición como de la respuesta del servidor del protocolo HTTP. Permite ver los certificados cuando se utiliza el protocolo HTTPS, las cabeceras enviadas y de respuesta de la petición, así como realizar peticiones utilizando cualquier verbo del protocolo HTTP.

El comando curl permite realizar una petición sin tener que implementar en código la llamada que se quiera probar. Cómo es un comando, no una aplicación, no permite guardar la colección de peticiones ni compartir con otros miembros del equipo de desarrollo una colección de peticiones ni mantener sincronizadas las colecciones y variables para los diferentes entornos de una aplicación.

Es posible utilizar un repositorio de código fuente como Git para guardar, compartir y mantener sincronizadas las colecciones peticiones pero el comando curl no ofrece ningún soporte para esto ni para utilizar variables y datos para diferentes entornos.

1
2
$ curl -v https://picodotdev.github.io/blog-bitix/

curl.sh
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
...
> GET /blog-bitix/ HTTP/2
> Host: picodotdev.github.io
> user-agent: curl/7.86.0
> accept: */*
> 
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
< HTTP/2 200 
< server: GitHub.com
< content-type: text/html; charset=utf-8
< permissions-policy: interest-cohort=()
< last-modified: Sat, 29 Oct 2022 03:46:53 GMT
< access-control-allow-origin: *
< etag: "635ca22d-88fd"
< expires: Thu, 03 Nov 2022 22:08:53 GMT
< cache-control: max-age=600
< x-proxy-cache: MISS
< x-github-request-id: 8B94:479F:70D593:739994:6364399D
< accept-ranges: bytes
< date: Thu, 03 Nov 2022 21:58:53 GMT
< via: 1.1 varnish
< age: 0
< x-served-by: cache-mad22067-MAD
< x-cache: MISS
< x-cache-hits: 0
< x-timer: S1667512734.552326,VS0,VE132
< vary: Accept-Encoding
< x-fastly-request-id: 3c819d3e28b1a87d6c2f80b4606c3530bcc35fbe
< content-length: 35069
< 
<!DOCTYPE html>
<html lang="es">
<head>
	<meta name="generator" content="Hugo 0.102.3" />
  <meta name="base" href="/blog-bitix/">
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <meta name="author" content="picodotdev">
  <meta name="keywords" content="java, programacion, software, hardware, tapestry, software libre, gnu, linux, gnu/linux, unix, arch, arch linux, web, html, css, javascript, tutorial, guía, básico, avanzado, análisis, tecnología, juegos, productos">
  <meta name="description" content="Blog sobre al lenguaje de programación Java y la distribución GNU/Linux que uso habitualmente, Arch Linux, lo que aprendo sobre el software libre, la programación web y otros temas relacionados con la tecnología y la informática. El contenido puede contener trazas de asuntos fuera de tema.">
  <meta name="theme-color" content="#FFFFFF"/>

  <title>Blog Bitix</title>
...
curl.out

Postman

La aplicación con interfaz gráfica Postman realiza en gran medida las mismas funciones que el comando curl pero con una aplicación de escritorio y con interfaz gráfica. Permite crear peticiones, añadir cabeceras en las peticiones y ver los resultados, cabeceras y código de estado devueltos en las peticiones HTTP.

Adicionalmente ofrece otras funcionalidades como soporte para trabajar en equipos compuesto por varios desarrolladores para compartir colecciones y entornos y mantenerlos sincronizados entre los diferentes miembros del equipo. Otras funciones que tiene es la de poder ejecutar scripts de código antes de realizar la petición para calcular algún dato y enviarlo en la petición. Los entornos permiten crear colecciones de variables y cambiando de un entorno a otro utilizando en las peticiones diferentes valores, por ejemplo las credenciales de autorización para invocar un endpoint.

Postman es una herramienta muy conocida y utilizada, ofrece una aplicación de escritorio para los diferentes sistemas operativos incluyendo GNU/Linux como una aplicación Flatpak. Sin embargo, no es gratuita y en entornos profesionales requiere una licencia de uso que está en función del número de usuarios que la utilizan. Es cara y tiene un coste significativo para una herramienta aunque útil cuando se usa es una herramienta que se usa ocasionalmente.

Postman

Postman

Hoppscotch, alternativa a Postman

Alternativas a Postman hay varias algunas como complementos para el editor de texto y código Visual Studio Code. De las alternativas a Postman la más parecida y que tiene funcionalidades equivalentes y suficiente como para reemplazarla es Hoppscotch.

Al igual que Postman la aplicación Hoppscotch es una aplicación destinada a realizar peticiones a servicios utilizando HTTP y soportando otros protocolos como GraphQL, Websockets y MQTT. Una de las ventajas de Hoppscotch sobre Postman está en su licencia ya que es de código abierto y sin coste de licencia. La interfaz de usuario de Hoppscotch está muy cuidada y es similar a la de Postman permitiendo crear peticiones junto a sus cabeceras así como ver el resultado devuelto, cabeceras y código de estado.

Entre las funcionalidades que ofrece Hoppscotch están:

  • Posibilidad de trabajar en equipos y compartir colecciones
  • Scripts previos a la petición
  • Soporta múltiples métodos de autenticación
  • Entornos y variables
  • Posibilidad de mostrar el curl e importar el curl
  • Importar desde OpenAPI y Postman, exportar como JSON
  • Posibilidad de ejecutarlo desde su web, en local como un contenedor Docker o paquete npm

Aunque Hoppscotch tiene una licencia sin coste los desarrolladores ofrecen ser patrocinados en su repositorio de GitHub para seguir realizando cambios e implementando mejoras. Si es útil y se utiliza en un entorno profesional se anima a realizar en la medida de lo posible una contribución económica a los desarrolladores.

Hoppscotch

Hoppscotch


Comparte el artículo: