La anotación @RequestMapping se utiliza para asignar solicitudes web a clases de controlador específicas y/o métodos de controlador. @RequestMapping se puede aplicar tanto a la clase de controlador como a los métodos.
@RequestMapping en clases
Podemos usarlo con definición de clase para crear el URI base. Por ejemplo, si queremos definir la ruta base a usar en un controlador que empiece para todos los métodos con /usuarios podemos ver el @RequestMapping a nivel de clase.
@RestController
@RequestMapping("/usuarios")
public class UsuariosControlador {
}
@RequestMapping en métodos
Podemos usarlo con el método para proporcionar el patrón URI para el cual se usará el método del controlador.
@RequestMapping("/usuarios")
public String obtenerUsuarios(){
return "todos los usuarios";
}
@PathVariable
@RequestMapping se puede usar para manejar URI dinámicos donde uno o más valores de URI funcionan como un parámetro. Incluso podemos especificar la expresión regular para el parámetro dinámico URI para aceptar solo un tipo específico de entrada. Funciona con la anotación @PathVariable a través de la cual podemos asignar la variable URI a uno de los argumentos del método.
@RequestMapping("/usuarios/{id}")
public String obtenerUsuarios(@PathVariable("id") int id){
return "usuario con el id " + id;
}
@RequestParam
A veces obtenemos parámetros en la URL de solicitud, principalmente en solicitudes GET. Podemos usar @RequestMapping con la anotación @RequestParam para recuperar el parámetro de URL y asignarlo al argumento del método.
@RequestMapping("/usuarios")
public String obtenerUsuarios(@RequestParam("id") int id){
return "usuario con el id " + id;
}
Atributos @RequestMapping
Value
El atributo value es el que recoge que URI se va a manejar, también acepta multiples URI.
@RequestMapping(value = { "/usuarios", "/usuarios/todos" })
public String obtenerUsuarios(){
return "todos los usuarios";
}
method
A veces queremos realizar diferentes operaciones en función del método HTTP utilizado, aunque el URI de la solicitud sigue siendo el mismo. Podemos usar la variable method en @RequestMapping para limitar los métodos HTTP para los que se invocará este método, además acepta multiples métodos HTTP.
@RequestMapping(value = "/usuarios", method = {RequestMethod.POST, RequestMethod.GET})
public String obtenerUsuarios(){
return "todos los usuarios";
}
headers
Podemos especificar los encabezados que deben estar presentes para invocar el método del controlador. También admite multiples parámetros.
@RequestMapping(value = "/usuarios", headers={"nombre=juan", "id=1"})
public String obtenerUsuarios(){
return "todos los usuarios";
}
produces
Podemos usar el encabezado Content-Type y Accept para averiguar el contenido de la solicitud. @RequestMapping proporciona la variable produces donde podemos especificar el tipo de contenido de la solicitud para el cual se invocará el método.
@RequestMapping(value = "/usuarios", produces = {"application/json","application/xml"})
public String obtenerUsuarios(){
return "todos los usuarios";
}
consumes
Podemos usar el encabezado Content-Type y Accept para enviar el mensaje mimo que quiere como respuesta. @RequestMapping proporciona la variable consumes donde podemos especificar el tipo de contenido de la respuesta.
@RequestMapping(value = "/usuarios", consumes = {"application/json","application/xml"})
public String obtenerUsuarios(){
return "todos los usuarios";
}