Bonjour, Nest
Fait partie de la section TypeScript et NestJS du Journey Node.js de Coddy. Leçon 2 sur 24.
Dans Express, chaque route est une fonction que tu enregistres manuellement. NestJS attribue à chaque partie d’une API sa propre classe, et les décorateurs indiquent à Nest le rôle de chaque classe.
@Controller('books')
export class BooksController {
@Get()
findAll() {
return [{ title: 'Dune' }];
}
}Un contrôleur traite les requêtes correspondant à un chemin. @Controller('books') et @Get() sont des décorateurs. Un décorateur commence par @ et se trouve sur la ligne au-dessus d’une classe ou d’une méthode, pour indiquer à Nest à quoi elle sert. Les décorateurs de Nest se terminent toujours par (), même si rien ne se trouve à l’intérieur. Ensemble, ils associent findAll à GET /books, et Nest envoie la valeur renvoyée par la méthode au format JSON avec le statut 200. Nest n’envoie jamais de requête à une méthode qui n’a pas de décorateur de route.
Un module répertorie les classes qui vont ensemble. src/main.ts appelle NestFactory.create(AppModule) ; AppModule importe TasksModule, qui répertorie TasksController. Sur un ordinateur portable, tu le lancerais avec npm run start ; ici, le bouton Run s’en charge.
Dans le projet de départ, interface Task décrit les champs d’un objet tâche, et Task[] désigne un tableau de ces objets. private garde un champ à l’intérieur de sa classe. Un type placé après les parenthèses d’une méthode décrit la valeur qu’elle renvoie. Ces annotations aident TypeScript à vérifier ton code ; les décorateurs de Nest définissent les routes.
Défi
FacileTon premier serveur Nest contient déjà trois tâches, mais aucune route ne les renvoie encore. Ajoute la route qui les liste.
- Ouvre
src/tasks/tasks.controller.ts. La classeTasksControllercontient la liste dansthis.tasks.@Controller('tasks'), au-dessus de la classe, lui confie la gestion des chemins commençant par/tasks. - À l’emplacement du commentaire, ajoute une méthode (appelle-la
findAll) et marque-la avec@Get(). Elle renvoiethis.tasks. Nest renvoie ce que la méthode retourne au format JSON, avec le statut 200. Getvient de@nestjs/common, commeController. Ajoute-le à l’importation de la première ligne.
Essaie : appuie sur « Jouer », puis envoie GET /tasks. Tu obtiens le statut 200 et les trois tâches :
[
{ "id": 1, "title": "Write the README", "done": true },
{ "id": 2, "title": "Fix the login bug", "done": false },
{ "id": 3, "title": "Plan the sprint", "done": false }
]Envoie ensuite GET /task, sans le s. Aucune route ne correspond à ce chemin, donc Nest répond avec le statut 404 :
{ "message": "Cannot GET /task", "error": "Not Found", "statusCode": 404 }Essayez vous-même
import { Controller } from '@nestjs/common';
interface Task {
id: number;
title: string;
done: boolean;
}
@Controller('tasks')
export class TasksController {
private tasks: Task[] = [
{ id: 1, title: 'Write the README', done: true },
{ id: 2, title: 'Fix the login bug', done: false },
{ id: 3, title: 'Plan the sprint', done: false },
];
// Ajoutez ici une méthode qui répond à GET /tasks avec la liste.
}
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de TypeScript et NestJS
1Les bases de Nest
Classes et méthodesBonjour, NestEnregistrer un contrôleur4Gardes, filtres, intercepteurs
GardesEntraînez-vous par vous-même : Playground Express