Menu
CoddyTech

Paramètres de requête

Fait partie de la section TypeScript et NestJS du Journey Node.js de Coddy. Leçon 3 sur 17.

Un client qui ne veut que les tâches ouvertes ne devrait pas avoir à télécharger toutes les tâches et à les filtrer lui-même. La chaîne de requête, la partie après ?, contient des options de ce genre.

@Get()
findAll(@Query('author') author?: string) {
    if (!author) {
        return this.books;
    }
    return this.books.filter((book) => book.author === author);
}

@Query('author') lit ?author=Le%20Guin, ou renvoie undefined si la requête ne contient pas ce paramètre.

Les types TypeScript sont supprimés à l’exécution du code : Node exécute le JavaScript restant après la suppression des types, et rien ne les vérifie. Écris inStock?: boolean et Nest te transmet quand même la chaîne 'false', qui est évaluée comme vraie. Les types documentent ton code et aident l’éditeur ; compare les valeurs de requête sous forme de texte.

challenge icon

Défi

Facile
  • GET /tasks?done=true renvoie uniquement les tâches terminées ; GET /tasks?done=false uniquement les tâches en cours.
  • Sans done, GET /tasks renvoie toutes les tâches.
  • Envoie GET /tasks?done=false, puis GET /tasks?done=true.

Essayez vous-même

import { Controller, Get, Param } 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 },
    ];

    @Get()
    findAll(): Task[] {
        return this.tasks;
    }

    @Get(':id')
    findOne(@Param('id') id: string): Task | undefined {
        return this.tasks.find((task) => task.id === Number(id));
    }
}
quiz iconTestez-vous

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