Introducción a Paw: Crea Peticiones HTTP

Introducción a Paw: Crea Peticiones HTTP

Paw es una herramienta muy útil y flexible para probar nuestras peticiones HTTP. Te muestro como usar la app desde el minuto 1 y como exportar endpoints para que puedas usarlos en Swift (o cualquier otro lenguaje).

SwiftBeta

Hoy vamos a ver otra herramienta que uso en mi día a día para debuggar APIs. La licencia vale 49,99€, también tienes el periodo trial que lo puedes probar hasta 30 días. Quiero dejar claro que no me llevo nada y que no es una promoción, os doy toda la información de antemano, ya que hay otras alternativas gratuitas o con un precio más asequible.

Paw – The most advanced API tool for Mac
Paw is a full-featured HTTP client that lets you test and describe the APIs you build or consume. It has a beautiful native macOS interface to compose requests, inspect server responses, generate client code and export API definitions.

Con Paw podemos generar proyectos y guardar todos los endpoints que usamos en nuestros proyectos, de una manera muy organizada.

Imagina que quieres crear una app, podrías añadir y organizar todos los endpoints que necesitas para ver qué parámetros necesitas, el tipo de HTTP method que necesitas (si es POST, GET, PUT, etc), añadir notas a cada endpoint, etc. O imagina que en tu empresa estáis creando todos los endpoints para una nueva funcionalidad, podrías ir acumulándolos aquí para ahorrarte tiempo en un futuro e ir haciendo pruebas.

Normalmente toda esta información aparece en Swagger y se actualiza cada vez que nuestro backend ha cambiado un endpoint.

Cuando instalamos Paw, debería aparecer la siguiente pantalla

Para empezar a guardar endpoints vamos a usar la API de Apple para buscar canciones en iTunes. ¿Por qué vamos a usar esta API? no necesitamos crear ningún token, ni nada de authenticación antes de consumirla (muchas APIs están protegidas y primero debes obtener un token registrandote en su plataforma de developers como Twitter, Twitch, etc). Por lo tanto es ideal para los ejemplos que haremos acontinuación.

Ejemplos de search en iTunes

Vamos a buscar canciones de Jack Johnson, para ello pegaremos en la única casilla que hay este endpoint:

https://itunes.apple.com/search?term=jack+johnson

Al pegarla, automáticamente añade el parámetro term como URL Parameter. Si ejecutamos el endpoint obtenemos el resultado de la siguiente imagen:

  1. Campo donde está el path de nuestro endpoint.
  2. Parámetos necesarios para llamar a nuestro endpoint. En este caso es term con el nombre del artista.
  3. Header de nuestra llamada.
  4. JSON recibido después de ejecutar la llamada (Podemos verlos en varios formatos, como xml)
  5. Status code de la llamada y tiempo en milisegundos. Aquí nos saldrán los estado típicos de HTTP (200, 201, 400, 50, etc)

Ahora vamos a llamar al mismo endpoint pero con 1 parámetros más, uno que nos limite el número de resultados:

https://itunes.apple.com/search?term=jack+johnson&limit=25

El resultado final en Paw es el siguiente:

  1. Botón para añadir un nuevo endpoint (extremo inferior izquiera).
  2. Los parámetros de nuestra llamada. Ahora aparece limit indicando el límite de resultados que queremos obtener.
  3. Información del resultado, como ves aquí hay muchas opciones con información: Info, Request y Response

Como ves, Paw es bastante intuitivo y esto es solo una pequeña introducción a esta app.

Importar y Exportar

Con Paw podemos importar y exportar endpoints. ¿Qué significa esto? Podemos importar un cURL y Paw nos generará la llamada sin problemas, o podemos exportar nuestro anterior ejemplo a cURL. Solo debemos dar al icono de HTTP con las flechas para seleccionar cómo queremos exportar:

Al clickar en él, aparecerán opciones para importar:

Si seleccionamos cURL verás como en la Preview (el panel inferior) cambia a la siguiente imagen:

Si copias y pegas lo que aparece en el panel inferior, puedes ir a tu terminal y ejecutar la petición HTTP desde allí:

curl "https://itunes.apple.com/search?term=jack%2Bjohnson&limit=25"
Al importar también nos aparece la opción de importar en Swift. Esto es muy útil para hacer ejemplos rápidos en Swift (pero no lo aconsejo ya que el código que produce no se adaptará a tu codebase y seguro que lo puedes optimizar). Solo es aconsable para aplicaciones muy sencillas.

Podemos importar esta llamada en Swift y así poderla añadir directamente en nuestro proyecto, solo tienes que copiar y pegar lo que aparece en la Preview (el panel inferior):

Se generaría el código en el mismo lugar que hemos visto el del cURL. Vemos que ha creado la clase MyRequestController y dentro de la clase un método de sendRequest() encargado de realizar la petición HTTP.


Crear Variables en Paw

Podemos crear variables en nuestro distintos entornos, muy útil para cambiar valores cuando estás en el entorno de producción, beta o docker.

Para ello, podemos crear las variables seleccionando en environments. Aquí crearemos el grupo Application, con dos opciones: Production y Beta.

La variable la llamaremos host, y tendrá distintos valores para Production y Beta. Una vez creada la variable la tenemos que usar en nuestra URL abriendo la llave { y a medida que vayamos escribiendo el nombre de la variable la lista irá filtrando el resultado que queremos, en nuestro caso tienes que escribir host:

El resultado final será:

Podremos cambiar el entorno al que apuntamos seleccionando en Production y escogiendo el entorno que queremos usar. Como ves solo hemos creado una variable pero puedes crear tantas como quieras.


Ventajas

Hay muchas ventajas de usar un programa como este:

  • Debuggar rápidamente el resultado del endpoint para ver si estás mandando de manera correcta todos los parámetros, encoding, httpMethod, etc.
  • Testear un endpoint para ver que todo funciona correctamente (status code de la petición HTTP).
  • Ver qué valores del JSON necesitas en tu app y así crear tu modelo de dominio.
  • Tener un único sitio, con toda la información de los endpoints.
  • Se puede exportar y compartir todo tu trabajo con más compañeros.


Paw es una app muy completa y que nos ayuda en nuestro día a día a debuggar endpoints antes de implementarlos en nuestras aplicaciones. Y como hemos mencionado hay más alternativas a él, pero nos encanta usarlo.

Hasta aquí el post de hoy, gracias por leernos! 🤓
Si tienes preguntas no dudes en contactar con nosotros a través de Twitter

Si quieres seguir aprendiendo sobre SwiftUI, Swift, Xcode, o cualquier tema relacionado con el ecosistema Apple


Tools