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 :

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);
    }
}

Revision #2
Created 3 February 2021 17:07:28 by Arsène Lapostolet
Updated 3 February 2021 18:25:56 by Arsène Lapostolet