Aller au contenu principal

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

ClasseCode HTTPUsage
BadRequestException400Données invalides (souvent géré auto par la validation)
UnauthorizedException401L'utilisateur n'est pas connecté
ForbiddenException403L'utilisateur n'a pas le droit
NotFoundException404Ressource introuvable
ConflictException409Doublon (ex: email déjà pris)
InternalServerErrorException500Oups... (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);
}
}