Probando tu api Rest con el cliente de Intellij IDEA

En este tutorial aprenderemos cómo integrar test de api rest en Intellij IDEA.

Índice de contenidos

  1. Introducción
  2. Entorno
  3. El primer test
  4. Entornos
  5. Almacenar datos entre tests
  6. Conclusiones
  7. Referencias

 

1. Introducción

Cuando desarrollamos nuestro api rest o tu aplicación necesita integrarse con otro de terceros, muchas veces nos preguntamos, ¿qué devuelve esto realmente? ¿Estoy haciendo las llamadas correctas? ¿Quién no ha hecho un curl o ha utilizado otras herramientas fuera de tu IDE? En este tutorial vamos a conocer cómo realizar estos tests con Intellij.

 

2. Entorno

El tutorial está escrito usando el siguiente entorno:

  • Intellij Idea Ultimate 2019.3

 

3. El primer test

En nuestro proyecto, en cualquier directorio, creamos un fichero con extensión .http ,

Y el contenido, por ejemplo:

GET https://adictosaltrabajo.com
Accept: */*
Cache-Control: no-cache

Para ejecutar, sólo tendremos que darle al play como cualquier test en Intellij

Y mostrará la respuesta en la consola:

 

4. Entornos

Vale, está claro que sólo es un test de ejemplo. Pero cuando estamos desarrollando, a veces queremos probar en diferentes entornos. Por ejemplo en tu local y en el servidor de integración. Para ello, podemos crear un fichero definiendo los entornos y las variables:

Debe tener el nombre rest-client.env.json para que detecte los entornos.

{
  "local": {
    "host": "localhost:8080"
  },
  "pro": {
    "host": "adictosaltrabajo.com"
  }
}

Y se referencia la variable en el test:

GET https://{{host}}
Accept: */*
Cache-Control: no-cache
###

Al ejecutar, nos permitirá elegir el entorno.

Eligiendo pro, muestra en la consola la llamada con el valor de pro.

 

5. Almacenar datos entre tests

En muchas ocasiones, para consultar nuestro api necesitamos un token válido que adjuntar o cualquier otro dato que enviar a otras llamadas.

En el fichero de entorno, incluimos una variable, por ejemplo token.

{
  "local": {
    "host": "localhost:8080",
    "token": ""
  },
  "pro": {
    "host": "adictosaltrabajo.com",
    "token": ""
  }
}

Y se puede crear otro fichero http-client.private.env.json que almacene los datos sensibles, como por ejemplo el password del login. Este fichero se añadiría al .ignore del proyecto.

{
  "local": {
    "password": "localPass"
  },
  "pro": {
    "password": "proPass"
  }
}

El body de la petición se incluye debajo de la llamada, y el siguiente bloque permite definir una función que en este caso recupera el token de la respuesta y lo asigna a la variable token.

POST http://{{host}}/api/auth/login
Accept: */*
Cache-Control: no-cache
Content-Type: Application/Json

{"username": "stoledano@adictosaltrabajo.com", "password": {{passwrod}} }

> {%
    client.global.set("token", response.body.token);
%}

###
GET http://{{host}}/v1/documents?page=30
Accept: */*
Cache-Control: no-cache
Content-Type: Application/Json
Authorization: Bearer {{token}}

> {%
    client.test("Request executed successfully", function() {
        client.assert(response.status === 200, "Response status is not 200");
    });
%}

De tal manera que si ejecutamos el segundo test «v1/documents» la variable token tiene el valor recuperado en la anterior petición. Al incluir la función de comprobación status se ve que no recibimos un 401 y que el token se está incluyendo correctamente.

Se puede reutilizar en otros test de este mismo fichero o en otros, pues lo almacena de manera global. Cuando el token caduque, basta con realizar sólo la llamada del token.

 

6. Conclusiones

Creo que la puesta en marcha de estos test es muy rápida y permite centralizar nuestro desarrollo en una sola herramienta e incluso la facilidad de almacenarlo con el proyecto, con las ventajas que ello supone.

 

7. Referencias

https://www.jetbrains.com/help/idea/http-client-in-product-code-editor.html

Comentarios

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

He leído y acepto la política de privacidad

Información básica acerca de la protección de datos

  • Responsable: IZERTIS S.A.
  • Finalidad: Envío información de carácter administrativa, técnica, organizativa y/o comercial sobre los productos y servicios sobre los que se nos consulta.
  • Legitimación: Consentimiento del interesado
  • Destinatarios: Otras empresas del Grupo IZERTIS. Encargados del tratamiento.
  • Derechos: Acceso, rectificación, supresión, cancelación, limitación y portabilidad de los datos.
  • Más información: Puedes ampliar información acerca de la protección de datos en el siguiente enlace:política de privacidad

Consultor tecnológico de desarrollo de proyectos informáticos. Ingeniero Técnico en Informática de Sistemas. Puedes encontrarme en Autentia: Ofrecemos servicios de soporte a desarrollo, factoría y formación Somos expertos en Java/Java EE

¿Quieres publicar en Adictos al trabajo?

Te puede interesar

16/09/2025

Iván Suarez Romero

La deuda técnica condiciona la sostenibilidad de los CMS más usados. En este artículo comparamos WordPress, Joomla y Drupal, analizando sus arquitecturas, limitaciones y fortalezas para ayudarte a elegir la plataforma más adecuada a tu proyecto.

30/10/2024

Nuria Rodríguez López

Destaca la importancia de la transparencia en la investigación financiada públicamente, señalando que los ciudadanos tienen derecho a conocer los resultados obtenidos. Menciona herramientas como CORDIS, que facilitan el acceso a información sobre proyectos europeos de I+D+i.

24/05/2024

Iñaki Gómez

El concepto de diseño estratégico va más allá de los aspectos técnicos o estéticos de un producto o servicio. Busca solucionar necesidades, deseos y expectativas de los usuarios en relación a problemas reales, generando valor y ventaja competitiva a negocio.