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.


Deja un comentario

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