Gérer les codes de réponse HTTP
Dans le standard REST, les codes de retours HTTP sont importants car ils ont une sémantique. Il convient donc de retourner les bons codes de réponse HTTP dans chacun de nos endpoints.
Cas nominal
Pour le cas nominal, on peut utilise l'annotation @ResponseStatus
sur la méthode endpoint. On lui passe en paramètre le status à l'aide de l'annotation HttpStatus
.
Exemple :
@GetMapping
@ResponseStatus(HttpStatus.CREATED)
public TodoDTO createTodo(@RequestBody CreateTodoDTO dto){
...
}
Cas d'erreur
Pour gérer les cas d'erreur on peut lancer des exceptions spécifiques définies par le framework, comme par exemple :
BadRequestException
: pour le status 400 Bad RequestResourceNotFoundException
: pour le status 404 not found.
Il est également possible d'attribuer des codes de retours à des exception personnalisées qui étende RuntimeException
avec l'annotation @ResponseStatus
:
@ResponseStatus(value = HttpStatus.I_AM_A_TEAPOT)
public class IamATeapotException extends RuntimeException {
public MyResourceNotFoundException() {
super();
}
public MyResourceNotFoundException(String message, Throwable cause) {
super(message, cause);
}
public MyResourceNotFoundException(String message) {
super(message);
}
public MyResourceNotFoundException(Throwable cause) {
super(cause);
}
}
No Comments