Header params con @HeaderParam

Header params con @HeaderParam

Los header son utilizados en REST para enviar metadatos asociados a la petición o la respuesta, los cuales van desde el formato y tamaño del payload, nombre del servidor del servidor de aplicaciones, fecha de invocación, caducidad de un recurso, versión y nombre del sistema operativo, tipo de navegador, dispositivo, lenguaje y hasta headers para la seguridad.

NOTA: Este artículo es parte de un tutorial completo para crear API REST con JAX-RS, si quieres ver el índice completo entra aquí.


Los headers es una sección adicional al payload de una solicitud, la cual no puede ser vista a simple vista, si no que requiere de un analizador HTTP para poderlos ver, sin embargo, todas las solicitudes llevan por default una serie de headers, incluso si nosotros no las establecemos. Los headers enviados por default varían de cliente a cliente y de servidor a servidor, por lo que en este artículo aprenderemos a analizar los headers.

Uno de los principales usos de los header es para enviar los tokens de
autenticación, como es el caso de JSON Web Token (JWT), el cual lo establecemos en el header Authorization, dicho lo anterior, veremos como recuperar este header mediante el API JAX-RS de Java.

Los header pueden ser recuperados anotando los parámetros con @HaderParam, por lo que vamos a requerir un parámetro en Java por cada header que esperamos recibir en el API.

Si ejecutamos el ejemplo anterior, podemos ver el siguiente resultado:

JAX-RS @HeaderParam recuperar un query param

En la parte superior podemos ver los header que definimos en el request y en la parte de abajo los header que nos retorno el servidor; en la respuesta podemos ver el token que le hemos enviado.

Otra de las formas de recuperar los header es por medio de la clase HttpHeaders, la cual podemos inyectar a nuestro método mediante la anotación @Context. La ventaja evidente de esté método es que podemos recuperar cualquier header, sin importar si lo esperábamos o no y nos evita tener que definir una grán cantidad de parámetros si esperamos muchos headers. Veamos un nuevo ejemplo con este método:


Ahora veamos una ejecución de prueba:

JAX-RS @HeaderParam recuperar todos los query params

En este caso, podemos observar que hemos recibido muchos más parámetros de los que enviamos, y esto se debe a lo que mencionamos al inicio, y es que cada cliente agrega una serie de headers para identificarlo.

Agregar headres en la respuesta

Ademas de recibir headers, también podemos enviar headers a los clientes del API; los headers los podemos agregar directamente al objeto Response, mediante una serie de claves-valor, veamos un ejemplo:

Conclusiones

No debemos de confundirnos al momento de utilizar los headers, pues no se deben de utilizar como una forma de enviar parámetros a nuestro API, si no como metadatos que complementen el request y que ayuden al servidor/cliente como tratar la solocitud/respuesta.




Artículos relacionados


Como crear un DataSource en WebLogic En este artículo les explico los pasos que se tiene que llevar a cabo para registrar un nuevo Data Source en WebLogic. Los Data Source o fuentes de da...
Creando un API REST en Java (parte 1) Sin lugar a duda, los servicios REST ya se han convertido en la principal tecnología para construir servicios, superando con creces a los servicios SO...
Web Services con Java (JAX-WS) Los Web Services cada vez son más indispensable a la hora de construir aplicaciones, debido a que ya casi cualquier aplicación empresarial, requiere i...
Java – Como eliminar rápidamente elementos r... Hace tiempo un amigo me preguntaba  como podía eliminar los elementos repetidos de una colección sin hacer mucho esfuerzo. Bien la solución que consid...
Métodos HTTP (REST) Los métodos HTTP definen la acción que se realizará sobre un determinado recurso. Los métodos HTTP, también suelen ser llamados HTTP Verbs. Aunque el ...
Java 8 – Streams Los Streams son una secuencia de elementos que soportan operaciones de agregación secuencial y paralela. Una de las nuevas características de Java 8 q...
JMS en las integraciones Cuando hablamos de integrar aplicaciones se nos viene a la menta los WebServices ya que es una forma simple de comunicar dos sistemas independientes s...
Java Message Service (JMS) En este Post se habla hacer de la especificación de JMS, los patronos de entrega de manejes que soporta como lo son Punto a Punto(P2P) y Publicador/Su...
Estructuras de datos – Listas ligadas Sin duda una de las partes mas emocionantes cuando programamos es la parte de la algoritmia donde tenemos que usar la mente para resolver problemas qu...
Entendiendo los métodos HTTP (JAX-RS) En la entrada pasada hablamos acerca de los métodos HTTP disponibles por JAX-RS, sin embargo, hay ocasiones en las que los métodos implementados por d...

Deja un comentario

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