Menu
CoddyTech

Создание задач

Часть раздела TypeScript и NestJS путешествия по Node.js на Coddy. Урок 4 из 17.

Клиент, который создаёт задачу, отправляет её в формате JSON в теле запроса и должен получить сохранённую задачу в ответ.

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

@Post() связывает POST по пути контроллера с методом, а @Body() передаёт ему разобранный JSON. Nest самостоятельно читает тела запросов в формате JSON, поэтому добавлять express.json() не нужно.

На POST-запрос Nest отвечает статусом 201 Created — этот статус означает, что создан новый ресурс, а на все остальные методы отвечает статусом 200. @HttpCode(200) в методе изменил бы его; при создании оставь всё как есть.

challenge icon

Задание

Легко
  • POST /tasks с { "title": "Buy milk" } отвечает кодом 201 и возвращает новую задачу: новый номер id, title и done: false.
  • GET /tasks/:id находит её после этого.
  • Отправь этот запрос, затем отправь POST /tasks с {} и посмотри, что будет сохранено.

Попробуйте сами

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));
    }
}

Все уроки раздела TypeScript и NestJS