Saltar al contenido

Artículos, tutoriales, trucos, curiosidades, reflexiones y links sobre programación web ASP.NET Core, MVC, Blazor, SignalR, Entity Framework, C#, Azure, Javascript... y lo que venga ;)

17 años online

el blog de José M. Aguilar

Inicio El autor Contactar

Artículos, tutoriales, trucos, curiosidades, reflexiones y links sobre programación web
ASP.NET Core, MVC, Blazor, SignalR, Entity Framework, C#, Azure, Javascript...

¡Microsoft MVP!
martes, 7 de marzo de 2023
Visual Studio

Si desarrollas APIs, probablemente utilizarás Postman, Fiddler o herramientas similares para probarlas. Cualquier utilidad capaz de lanzar peticiones y analizar la respuesta, incluso basadas en línea de comandos como el desconocido Dotnet HTTP REPL, viene de perlas para ponernos en el lugar del cliente y comprobar cómo responde nuestra API ante determinados parámetros de entrada, o qué se siente al consumirla.

Tiempo atrás, el descubrimiento de la extensión REST client para Visual Studio Code supuso una bocanada de aire fresco en la forma de lanzar peticiones y examinar respuestas, para mi gusto mucho más cómoda que las que estaba acostumbrado a utilizar. Esta extensión permite definir peticiones HTTP en archivos de texto con extensión .http o .rest y ejecutarlas de forma realmente sencilla, sin abandonar el IDE.

Pues bien, la última revisión de Visual Studio 2022 (17.5) ha incluido el soporte nativo para este tipo de archivos, así que cada vez lo tenemos más sencillo. Y como es posible que alguno de vosotros aún no lo conozca, vamos a echarle un vistazo ;)

¿En qué consiste esta nueva funcionalidad de VS?

Como decía algo más arriba, la gracia está en que ya no tendremos que usar herramientas externas para definir y ejecutar peticiones a un servicio HTTP, sino que lo haremos desde dentro del propio entorno de desarrollo.

Usando el menú Add > New item podemos añadir fácilmente archivos con extensión .http a cualquier proyecto, como Test.http o PaymentsAPI.http. El contenido más simple que podemos tener en este tipo de archivos es una línea como la siguiente:

GET https://www.google.es

¡Eso es todo! Basta con indicar el método o verbo de la petición y la URL de destino. Cuando lo abrimos con Visual Studio, veremos que el propio editor ya detecta que la línea del GET es una petición, e inserta un botón de "play" para que la ejecutemos directamente:

Visual Studio con un archivo .http abierto y el resultado de la petición visible

Obviamente, en esa línea podríamos añadir parámetros de query string o debajo de ella agregar encabezados, o incluso el cuerpo completo de la petición, algo como lo siguiente:

POST https://localhost:48374/api/friends
content-type: application/json

{
    "name": "John Doe",
    "age": 43
}

Visual Studio con otro archivo .http abierto y el resultado de la petición visible

Pero bueno, visto así no parece que sea para dar saltos de entusiasmo... pero la cosa mejora cuando vemos que podemos añadir distintas peticiones en el mismo archivo separándolas con tres o más caracteres "#", o usar "//" para introducir comentarios:

// Obtener el contenido de la home de Google
GET https://www.google.es

###

// Obtener el contenido de la home de Bing
GET https://www.bing.es

En este caso, Visual Studio mostrará un botón para cada petición definida, de forma que podremos lanzarlas cómodamente:

Visual Studio mostrando un archivo .http con la definición de dos peticiones distintas

Otra de las funcionalidades que hacen de esta característica algo indispensable es su capacidad para utilizar variables.

Las variables se definen directamente en el mismo archivo mediante una sintaxis bastante previsible, usando asignaciones de la forma @varName=valor. Luego, podemos referenciarlas en cualquier parte de la petición o peticiones definidas posteriormente usando la expresión {{varName}}. Vemos a continuación un ejemplo donde vemos cómo definir y usar variables:

@host = localhost:7194
@token = test-1s890udiuh3iuhsio8uhkjdsekh3
@firstName = John
@lastName = Doe
@age = 42
@fullName = {{firstName}} {{lastName}}

POST https://{{host}}/api/friends
Authorization: {{token}}
Content-Type: application/json

{
  "name": "{{fullName}}",
  "age": {{age}}
}

Seguro que podéis intuir la utilidad que puede suponer el tener en el código fuente de nuestros proyectos API un conjunto completo de llamadas definidas de esta forma para nuestros endpoints, muy fáciles de leer por un humano, y además directamente ejecutables sin necesidad de instalar nada.

¿Significa esto que herramientas como Postman o Fiddler ya no son necesarias?

Pues en mi opinión, estas dos magníficas herramientas, así como otras más que pululan por ahí, aportan funcionalidades avanzadas que van más allá de definir o efectuar llamadas HTTP, por lo que no creo que vayan a desaparecer o que vayamos de dejar de utilizarlas totalmente.

Pero lo que es cierto es que en muchos casos la solución incluida en Visual Studio será más que suficiente, así que, ¡a disfrutarla!

Eso sí, tened en cuenta que se trata de una primera versión de la característica y podríamos echar en falta funcionalidades, sobre todo si hemos usado herramientas similares en otros entornos como VS Code o en IDEs de JetBrains.

Publicado en Variable not found.

5 Comentarios:

Juan dijo...

Muy buena herramienta, en mi caso más que suficiente.

Hoy mismo la estreno. :-)

Muchas gracias.

José María Aguilar dijo...

Hola, Juan!

Pues sí, seguro que más que suficiente en muchos casos :)

Gracias por comentar!

Jose Eduardo Ramírez dijo...

Increíble utilidad. Acostumbrado a utilizar Postman, encontrar algo tan ligero y sencillo es una maravilla!!! :)

Oscar dijo...

Buenos dias José,

Se puede asigna una variable al resultado de un get o post

ejemplo:

@token= get https://myweb/api/gettoken

¿Esto es válido?

Gracias,

Saludos,

Óscar

José María Aguilar dijo...

Hola!

Hasta donde he visto, no se puede. Y es una pena, porque para el caso de los tokens sería super útil.

Espero que la herramienta siga evolucionando y proporcionen alguna forma de hacerlo.

Saludos!