Aller au contenu principal

Récupérer les données (Paramètres)

Un contrôleur qui ne reçoit aucune donnée, c'est rare. Tu as besoin de lire le body pour créer une ressource, ou les params pour savoir quel ID supprimer.

Au lieu d'utiliser l'objet req brut et de tout extraire manuellement, utilise ces décorateurs pour injecter exactement ce dont tu as besoin dans ta méthode.

Liste des Décorateurs

DécorateurSource FastifyUsage
@Body()req.bodyLe payload JSON envoyé par le client (POST/PUT).
@Param(key?)req.paramsLes variables dans l'URL (ex: /:id).
@Query(key?)req.queryLes paramètres après le ? (ex: ?page=2).
@Headers(key?)req.headersLes en-têtes de la requête.
@Req()reqL'objet FastifyRequest complet (si tu as besoin de bas niveau).
@Res()resL'objet FastifyReply complet (pour gérer des streams ou formats exotiques).

Extraction partielle (La clé 🔑)

Pour @Param, @Query et @Headers, tu peux passer une chaîne de caractères pour récupérer uniquement la valeur qui t'intéresse. C'est plus propre !

// ❌ Moins bien : on récupère tout l'objet
@Get('/:id')
findOne(@Param() params: any) {
return this.service.find(params.id);
}

// ✅ Mieux : on cible la donnée
@Get('/:id')
findOne(@Param('id') id: string) {
return this.service.find(id);
}

Exemple Complet

@Post('/:groupId/users')
async addUserToGroup(
@Param('groupId') groupId: string, // Vient de l'URL
@Body() userData: any, // Vient du JSON Body
@Query('admin') makeAdmin: boolean, // Vient de ?admin=true
@Headers('authorization') token: string // Vient du Header
) {
console.log(`Ajout user dans le groupe ${groupId}`);
}