Query-Parameter
Teil des Abschnitts TypeScript und NestJS der Node.js-Journey von Coddy. Lektion 3 von 17.
Ein Client, der nur die offenen Aufgaben möchte, sollte nicht erst alle Aufgaben herunterladen und selbst filtern müssen. Der Abfrageparameter, der Teil nach ?, enthält solche Optionen.
@Get()
findAll(@Query('author') author?: string) {
if (!author) {
return this.books;
}
return this.books.filter((book) => book.author === author);
}@Query('author') liest ?author=Le%20Guin aus oder liefert undefined, wenn die Anfrage keinen solchen Parameter enthält.
TypeScript-Typen werden beim Ausführen des Codes entfernt: Node führt das JavaScript aus, das nach dem Entfernen der Typen übrig bleibt, und niemand überprüft sie. Schreibe inStock?: boolean, und Nest übergibt dir trotzdem die Zeichenfolge 'false', die als wahr ausgewertet wird. Die Typen dokumentieren deinen Code und helfen dem Editor; vergleiche Abfragewerte als Text.
Aufgabe
EinfachGET /tasks?done=trueliefert nur die erledigten Aufgaben;GET /tasks?done=falsenur die offenen.- Ohne
doneliefertGET /tasksalle Aufgaben. - Sende zuerst
GET /tasks?done=false, dannGET /tasks?done=true.
Probier es selbst
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));
}
}
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.