Path params con @FormParam

Una de las cosas que pocos saben, es que REST nos permite crear servicios que se integren a la perfecci贸n con los formularios HTML, de tal forma que podemos lugar una etiqueta <form> directamente con un servicio REST. para ello, JAX-RS nos proporciona la anotaci贸n @FormParam.

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铆.

La diferencia fundamental que tienen los form params con respecto a los dem谩s, es que se obtiene directamente los campo asociados al formulario desde el cual se ejecuta, pero para entender mejor, veamos el siguiente ejemplo:

En este ejemplo debemos poner atenci贸n en la etiqueta <form>, la cual est谩 apuntando a un servicios REST mediante la etiqueta action, con lo cual le estamos diciendo al navegador que env铆e el formulario a nuestro servicio REST.

Otra de las cosas a tomar en cuenta son los campos dentro del form, como lo son el nombre, apellido y estatus, los cuales ser谩n los que sean enviados al servicio REST.

Una vez explicado lo anterior, pasemos a la implementaci贸n en JAX-RS para recuperar estos par谩metros:

Veamos como hemos definido una anotaci贸n @FormParam para cada uno de los par谩metros esperados del formulario, los cuales ser谩n mapeados a cada uno de los par谩metros del m茅todo en Java.

Las anotaciones @Consumes la utilizamos definir que esperamos el payload como un formulario.

Probando el servicio

Lo primero ser谩 abrir el la p谩gina HTML para verlo de la siguiente manera:

Una vez capturado el formulario, la damos grabar, lo que detonar谩 el submit del formulario y la ejecuci贸n del servicio REST, lo que dar谩 como resultado lo siguiente:

Podemos ver como el servicio REST ha recibido todos los par谩metros y los ha regresado como una cadena de texto.

Mediante la anotaci贸n @FormParam es f谩cil recuperar los valores de un formulario, pues los mapeamos a una par谩metro especifico del m茅todo Java, sin embargo, esta forma tiene la limitaci贸n de que requerimos N par谩metros en Java para mapear los N form params, lo que puede llegar a ser complicado en formularios grandes o donde los nombres de los par谩metros pudieran variar, en tales casos, podemos implementarlos de la siguiente manera para recuperar todos los form params como un colecci贸n:

Conclusiones

Los @FormParam pueden ser una buena alternativa cuando queremos ligar directamente un formulario con servicios REST, evitando tener que construir un request especifico.

Como inconveniente, tenemos que el servicio REST deber谩 retornar la estructura HTML de la siguiente p谩gina que ver谩 el usuario, o en su defecto, podemos redireccionar al usuario a la siguiente p谩gina.

Deja un comentario

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