Path params con @PathParam

JAX-RS Path params con @PathParams

Por increíble que parezca, en REST la URL puede proporcionar una de las principales fuentes de información para los servicios, pues es posible definir como parámetros de entrada ciertas parte de la URL, lo que nos permite en primer lugar, crear métodos especiales para atender ciertas URL, pero por otra parte, esos fragmentos de URL pueden ser inyectados como parámetros a los métodos Java.

NOTA: Este artículo pertenece a una guia completa para aprender a crear un API REST con el API de JAX-RS de Java, ve el índice completo aquí.


Hace unos días escribía sobre la forma de escribir los Path y como podemos como podemos podíamos definir parámetros con la anotación @Path, puede regresara a la sección Introducción a las URL con @Path si quieres tener un poco más de contexto sobre lo que estaremos hablando esta sección.

Definiendo un Path Param

No vamos a entrar en mucho detalle sobre como definir un parámetro desde @Path pues ya lo explicamos en una sección pasado, pero si repasaremos como se hacia. 


Como podemos apreciar en el fragmento de código anterior, es posible definir ciertas secciones de una URL como parámetros, encerrando entre llaves ({userId}) la parte que queremos recuperar como parámetro desde Java. 

Recuperar una Path Param con @PathParam

Ya que hemos definido todas secciones de parámetros dentro del @Path, lo que seguirá es recuperarlos desde el método Java para poderlos utilizar, para ello, debemos de establecer la anotación @PathParam en cada uno de los parámetros del método Java sobre el cual queremos inyectar el valor.


En el fragmento de código anterior, podemos apreciar como hemos establecido la anotación @PathParam para el parámetro user, el cual será inyectado con el valor del parámetro userId del @Path.

Recuperar un Path param mediante UriInfo

La segunda forma de recuperar un Path param es mediante la interface UriInfo, la cual es una interface que contiene todos los metadatos relacionados con la URL. Al ser una interface no puede ser instanciada, por lo que deberá ser inyectada para ser utilizada, vamos como sería:


La interface UriInfo proporciona el método getPathParameters que retorna una subclase de la interface java.util.Map con todos los parámetros, por lo que podemos iterar el nombre de los parámetros y sus valores, o podemos buscar directamente el valor de un parámetro mediante el método getFist
Al ejecutar el método anterior deberíamos tener como resultado el valor del parámetro param1, vamos el resultado:

Conclusiones

Los Path params son indispensables para definir de forma clara los recursos de tu API, pues evita tener que agregar parámetros de tipo Query, los cuales hacen que las URL sean complejas y difíciles de recordar, ademas de que no son agradables para SEO.




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...
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...
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 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...
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...
Patrón de Diseño Factory El patrón de diseño Factory Method nos permite la creación de un subtipo determinado por medio de una clase de Factoría, la cual oculta los detal...

Deja un comentario

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