¿Qué es @RequestParam?: gestiona los parámetros en tus aplicaciones web

Contenido del Bootcamp Dirigido por: | Última modificación: 25 de septiembre de 2024 | Tiempo de Lectura: 3 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

@RequestParam es una anotación perteneciente a Spring y es usada en el proceso de desarrollo de aplicaciones Java. En Spring MVC y Spring Boot se utiliza para la gestión de parámetros en solicitudes HTTP, lo cual permite que una aplicación reciba y procese datos enviados desde el frontend.

El día de hoy queremos contarte qué es @RequestParam, cómo se utiliza y qué opciones te ofrece para gestionar parámetros en tus aplicaciones web.

@requestparam

¿Qué es @RequestParam?

Grosso modo, el RequestParam es una anotación perteneciente a Spring que nos ayuda a extraer parámetros directamente de una solicitud HTTP. Dichos parámetros pueden ser enviados a través de una URL, formularios e inclusive como parte de una solicitud multipart para archivos.

Podemos encontrar esta anotación en el desarrollo de aplicaciones que necesiten recibir datos para realizar operaciones específicas, como filtrar una lista de usuarios o buscar un registro por su identificadsor.

Veamos un ejemplo:

@GetMapping("/api/usuarios")
@ResponseBody
public String obtenerUsuario(@RequestParam String id) {
return "ID del usuario: " + id;
}

Para este ejemplo la aplicación espera recibir un parámetro id en la URL. Un ejemplo de solicitud sería:
http://localhost:8080/api/usuarios?id=123. Aquí, el valor 123 se pasará como parámetro y el método lo procesará devolviendo el ID del usuario.

¿Cómo usar @RequestParam en Java?

Para usar Request Param lo único que necesitas es anotar el parámetro que quieres recibir en tu controlador por medio de la notación @RequestParam. Esta notación tiene varias opciones, a saber:

Especificando el nombre del parámetro

El nombre del parámetro en la URL puede ser diferente al nombre del argumento en el controlador. Si este es el caso, podemos usar el atributo name de RequestParam. Así puedes mapear nombres de parámetros de manera personalizada:

@PostMapping("/api/usuarios")
@ResponseBody
public String agregarUsuario(@ RequestParam(name = "identificador") String idUsuario) {
return "ID del usuario: " + idUsuario;
}

Aquí la URL debe incluir el parámetro identificador en lugar de idUsuario.

Parámetros opcionales con @RequestParam

Por defecto, los parámetros que sean anotados con RequestParam son obligatorios. En caso de que no se incluya el parámetro, la solicitud generará un error. No obstante, es posible hacer que el parámetro sea opcional usando el atributo required:

@GetMapping("/api/usuarios")
@ResponseBody
public String obtenerUsuarios(@RequestParam(required = false) String id) {
return "ID del usuario: " + (id != null ? id : "no proporcionado");
}

En este caso, si el parámetro no está presente en la URL, el valor de id será null, y puedes manejar la respuesta según tus necesidades.

Valores por defecto con @RequestParam

También podemos asignar un valor por defecto en caso de que el parámetro no esté presente. En este caso hacemos uso del atributo defaultValue:

@GetMapping("/api/usuarios")
@ResponseBody
public String obtenerUsuarios(@RequestParam(defaultValue = "1") String id) {
return "ID del usuario: " + id;
}

Si el usuario no proporciona el parámetro id, el valor predeterminado será 1.

@RequestParam ejem
En este caso la URL sería: http://localhost:8080/filtrar?nombre=Juan

¿Cómo gestionar múltiples parámetros con @RequestParam?

Muchas veces necesitarás recibir más de un parámetro en una solicitud. RequestParam hace posible la gestión de varios parámetros sin problemas, lo cual es útil cuando quieres realizar consultas más específicas:

@GetMapping("/api/usuarios")
@ResponseBody
public String obtenerUsuarioPorNombreYEdad(@RequestParam String nombre, @RequestParam int edad) {
return "Usuario: " + nombre + ", Edad: " + edad;
}

En el caso anterior la URL debe contener ambos parámetros, por ejemplo:
http://localhost:8080/api/usuarios?nombre=Juan&edad=25.

Parámetros múltiples en un solo argumento

También podemos gestionar múltiples valores para un solo parámetro. Supongamos que queremos obtener varios ID a la vez. Lo que haremos será lo siguiente:

@GetMapping("/api/usuarios")
@ResponseBody
public String obtenerUsuarios(@RequestParam List<String> ids) {
return "IDs: " + ids;
}

Una solicitud a la URL http://localhost:8080/api/usuarios?ids=1,2,3 devolverá la lista de IDs.

Mapear todos los parámetros con @RequestParam

Si no sabes cuántos parámetros se enviarán, puedes utilizar un Map<String, String> para capturar todos los parámetros de la solicitud:

@PostMapping("/api/usuarios")
@ResponseBody
public String obtenerParametros(@RequestParam Map<String, String> parametros) {
return "Parámetros: " + parametros.entrySet();
}

Si es necesario que trabajes con formularios complejos o solicitudes dinámicas donde no puedes anticipar todos los parámetros que se enviarán, esta es una buena opción.

¿Quieres asegurar tu futuro laboral y recibir excelentes ofertas de empleo? ¡Prepárate con nuestro bootcamp en Java! Aquí te llevamos de la teoría a la práctica para que adquieras las habilidades más demandadas en el sector IT. Mejora tu carrera y cambia de rumbo, ¡no te pierdas la mejor oportunidad de tus sueños!

Posts más leídos

¡CONVOCATORIA ABIERTA!

Java y Spring Boot

Full Stack Bootcamp

Clases en Directo | Profesores en Activo | Temario 100% actualizado