Service
NestJS 🟢 JuniorDefinition
Provider dedie a la logique metier, annote @Injectable. Il encapsule les operations de domaine et est injecte dans les controllers ou autres services.
Analogie
Comme le chef cuisinier d'un restaurant : le serveur (controller) prend la commande mais c'est le chef qui cuisine.
Exemple de code
@Injectable()
export class UserService {
constructor(private repo: UserRepository) {}
async findAll(): Promise<User[]> {
return this.repo.find();
}
}
Cas d'usage
Centraliser la logique metier pour qu'elle soit testable independamment des controllers.
Anti-pattern
Acceder directement au repository depuis le controller en bypassant le service.