...
Para los métodos que contendrán el código a ejecutar al recibir peticiones disponemos de las etiquetasetiquetas @GetMapping, @PostMapping,@PutMappingy @PutMapping y @DeleteMapping, para los diferentes tipos de peticiones. En estas anotaciones pondremos la ruta a la que tendrá que hacerse cada petición. Por defecto, estas rutas irán después del dominio. Si queremos añadir una ruta base de la que partan todas las rutas de estos métodos podemos añadirlo en el archivoarchivo application.properties:
| Bloque de código |
|---|
server.servlet.context-path=/rest/v1.0 |
...
Para añadir parámetros en la ruta de la petición, tenemos dos opciones. En primer lugar, tenemostenemos PathVariable. Cuando especifiquemos la ruta, pondremos entre corchetes estas variables, y como parámetro del método Java lo especificaremos con el mismo nombre, precedido de la anotaciónanotación @PathVariable:
| Bloque de código | ||
|---|---|---|
| ||
@GetMapping("/titulaciones/{dni}")
public List<AlumnoTitulacionDTO> getTitulaciones(@PathVariable String dni) {
// ...
} |
Un ejemplo de petición quedaría así (suponiendo que tenemos la aplicación corriendo enen localhost:8080):
| Bloque de código |
|---|
http://localhost:8080/titulaciones/12312300A |
@RequestParam
La otra opción eses RequestParam, que funciona de manera similar, pero sólo se indica en los parámetros de la función Java. Si queremos que sea obligatorio incluir esa variable en la petición, pondremospondremos required = true:
| Bloque de código | ||
|---|---|---|
| ||
@GetMapping("/titulaciones")
public List<AlumnoTitulacionDTO> getTitulaciones(@RequestParam(required = true) String dni) {
// ...
} |
...
Podemos definir diferentes métodos Java con la misma ruta de método REST, pero con diferentesdiferentes @RequestParam. Para ello, no nos vale sólo con tener diferentes argumentos, hay que indicarlos dentro de la anotaciónanotación @GetMapping, concon params, y tendremos que tener la ruta enen value:
| Bloque de código | ||
|---|---|---|
| ||
@GetMapping("/usuarios")
public List<UsuarioDTO> usuarios() {
// ...
}
@GetMapping(value = "/usuarios", params = "login")
public UsuarioDTO usuariosLogin(@RequestParam login) {
// ...
} |
...
Para utilizar los valores de los headers de la petición, disponemos de la anotaciónanotación @RequestHeader. Dentro de ésta pondremos el nombre del header enen value, y podemos especificar si es obligatorio que se incluya dicho header concon required. Por ejemplo, podemos utilizarlo para obtener el token de autenticación:
...
La primera opción que tenemos para personalizar la respuesta es la anotación @JsonIgnore que le podemos poner a los getters. Con ella, esa propiedad directamente no se inclirá incluirá en el JSON de respuesta. Si lo que queremos es devolver propiedades según la ocasión, podemos hacer uso de las vistas.
...
Después, en el modelo, en el getter de cada propiedad que queramos mostrar con cada vista, debemos añadir la etiquetaetiqueta @JsonView(Views.Detalle.class), poniendo la clase correspondiente:
...