@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.
¿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
.
¿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!