Menu
CoddyTech

Aufgaben erstellen

Teil des Abschnitts TypeScript und NestJS der Node.js-Journey von Coddy. Lektion 4 von 17.

Ein Client, der eine Aufgabe erstellt, sendet sie als JSON im Anfragekörper und benötigt die gespeicherte Aufgabe zurück.

@Post()
create(@Body() review: { stars: number }) {
    this.reviews.push(review);
    return review;
}

@Post() ordnet POST auf dem Pfad des Controllers der Methode zu, und @Body() übergibt ihr das geparste JSON. Nest liest JSON-Anfragekörper selbstständig ein, daher muss kein express.json() hinzugefügt werden.

Nest beantwortet eine POST-Anfrage mit 201 Created, dem Status, der angibt, dass eine neue Ressource existiert, und jede andere Methode mit 200. @HttpCode(200) an der Methode würde das ändern; bei einer Erstellung lässt du es so.

challenge icon

Aufgabe

Einfach
  • POST /tasks mit { "title": "Buy milk" } antwortet mit 201 und der neuen Aufgabe: einer neuen Zahl id, dem title und done: false.
  • GET /tasks/:id findet sie anschließend.
  • Sende diese Anfrage und sende dann POST /tasks mit {}, um zu sehen, was gespeichert wird.

Probier es selbst

import { Controller, Get, Param, Query } 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(@Query('done') done?: string): Task[] {
        if (done === undefined) {
            return this.tasks;
        }
        return this.tasks.filter((task) => task.done === (done === 'true'));
    }

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

Alle Lektionen in TypeScript und NestJS