...
Para crear nuestros servicios REST debemos seguir las buenas prácticas que están definidas en esta página de la wiki: Buenas prácticas con servicios REST
Devolver ResponseEntity o ResponseStatusException
En los métodos en los que devolvamos datos, si se devuelven los datos correctamente devolveremos objetos tipo ResponseEntity. Este tipo nos da más flexibilidad, permitiendo modificar la respuesta HTTP entera, controlando el código que se devuelve, los headers y los datos del body.
Un ejemplo de uso sería el siguiente. Para crear un ResponseEntity que devuelva un objeto UsuarioDTO, y código OK 200:
| Bloque de código | ||
|---|---|---|
| ||
@GetMapping(value = "/usuarios", params = "login")
public ResponseEntity<UsuarioDTO> usuariosLogin(@RequestParam login) {
// ...
return new ResponseEntity<>(usuarioDto, HttpStatus.OK);
} |
En el caso de que queramos devolver un error, por ejemplo, un Forbidden porque el usuario que ha solicitado un recurso no tiene acceso, lanzaremos una excepción ResponseStatusException, pues esta nos ofrece más información en la respuesta que se da.
| Bloque de código | ||
|---|---|---|
| ||
} catch (Exception e) {
throw new ResponseStatusException( HttpStatus.FORBIDDEN, "FORBIDDEN con ResponseStatusException", e);
} |
Controlador REST en Spring Boot
...
La respuesta que se enviará a la petición, si la hay, será el objeto, con sus atributos y valores, automáticamente en formato JSON.
Devolver ResponseEntity o ResponseStatusException
En los métodos en los que devolvamos datos, si se devuelven los datos correctamente devolveremos objetos tipo ResponseEntity. Este tipo nos da más flexibilidad, permitiendo modificar la respuesta HTTP entera, controlando el código que se devuelve, los headers y los datos del body.
Un ejemplo de uso sería el siguiente. Para crear un ResponseEntity que devuelva un objeto UsuarioDTO, y código OK 200:
| Bloque de código | ||
|---|---|---|
| ||
@GetMapping(value = "/usuarios", params = "login") public ResponseEntity<UsuarioDTO> usuariosLogin(@RequestParam login) { // ... return new ResponseEntity<>(usuarioDto, HttpStatus.OK); } |
En el caso de que queramos devolver un error, por ejemplo, un Forbidden porque el usuario que ha solicitado un recurso no tiene acceso, lanzaremos una excepción ResponseStatusException, pues esta nos ofrece más información en la respuesta que se da.
| Bloque de código | ||
|---|---|---|
| ||
} catch (Exception e) {
throw new ResponseStatusException( HttpStatus.FORBIDDEN, "FORBIDDEN con ResponseStatusException", e);
} |
Devolver diferentes propiedades
...