작업 생성하기
Coddy Node.js 여정의 TypeScript와 NestJS 섹션에 포함된 레슨. 17개 중 4번째.
작업을 생성하는 클라이언트는 요청 본문에 JSON으로 작업을 보내고, 저장된 작업을 응답으로 받아야 합니다.
@Post()
create(@Body() review: { stars: number }) {
this.reviews.push(review);
return review;
}@Post()는 컨트롤러의 경로에 있는 POST를 메서드에 연결하고, @Body()는 파싱된 JSON을 메서드에 전달합니다. Nest는 JSON 본문을 자체적으로 읽으므로 추가할 express.json()은 없습니다.
Nest는 POST 요청에 새 리소스가 생성되었음을 나타내는 상태 코드인 201 Created로 응답하고, 다른 모든 메서드에는 200으로 응답합니다. 메서드에 @HttpCode(200)을 지정하면 응답 코드가 바뀌지만, 생성 요청에서는 그대로 두세요.
챌린지
쉬움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));
}
}