Gestion des Erreurs (Exceptions)
Arrêtez de faire des res.status(400).send(...) manuels ! Le framework gère les erreurs pour vous de manière uniforme.
Les Exceptions HTTP
Le framework fournit une liste de classes d'erreurs prêtes à l'emploi. Il suffit de les lancer (throw) n'importe où (Controller, Service, Guard), et le framework les attrapera pour formater une belle réponse JSON.
Liste des Exceptions
| Classe | Code HTTP | Usage |
|---|---|---|
BadRequestException | 400 | Données invalides (souvent géré auto par la validation) |
UnauthorizedException | 401 | L'utilisateur n'est pas connecté |
ForbiddenException | 403 | L'utilisateur n'a pas le droit |
NotFoundException | 404 | Ressource introuvable |
ConflictException | 409 | Doublon (ex: email déjà pris) |
InternalServerErrorException | 500 | Oups... (Défaut) |
Exemple d'utilisation
import { NotFoundException, ConflictException, Service } from 'my-fastify-decorators';
@Service()
export class UserService {
findById(id: string) {
const user = this.db.find(id);
// Hop, le framework va renvoyer une 404 { "message": "User inconnu", ... }
if (!user) {
throw new NotFoundException(`L'utilisateur ${id} est introuvable`);
}
return user;
}
create(email: string) {
if (this.db.exists(email)) {
throw new ConflictException('Cet email existe déjà');
}
}
}
Créer une Exception Personnalisée
Vous avez besoin d'un code bizarre comme le 418 I'm a teapot ? Créez votre propre classe.
import { HttpException } from 'my-fastify-decorators';
export class TeapotException extends HttpException {
constructor() {
super("Je suis une théière", 418);
}
}