Nest 시작하기
Coddy Node.js 여정의 TypeScript와 NestJS 섹션에 포함된 레슨. 17개 중 1번째.
Express에서는 모든 경로가 직접 등록하는 함수입니다. NestJS에서는 API의 각 부분에 고유한 클래스를 지정하고, 데코레이터를 통해 각 클래스의 역할을 Nest에 알려 줍니다.
@Controller('books')
export class BooksController {
@Get()
findAll() {
return [{ title: 'Dune' }];
}
}컨트롤러는 하나의 경로에 대한 요청에 응답합니다. @Controller('books')와 @Get()은 데코레이터입니다. 앱이 시작될 때 Nest가 읽는 레이블이죠. 두 데코레이터를 함께 사용하면 findAll이 GET /books에 연결되고, Nest는 메서드가 반환하는 값을 상태 코드 200과 함께 JSON으로 보냅니다. 데코레이터가 없는 메서드는 호출되지 않습니다.
모듈은 서로 관련된 클래스들을 나열합니다. src/main.ts는 NestFactory.create(AppModule)을 호출하고, AppModule은 TasksController를 나열하는 TasksModule을 가져옵니다. 노트북에서는 npm run start로 실행하겠지만, 여기서는 Run이 대신 실행합니다.
챌린지
쉬움TasksController에tasks배열을 반환하는GET /tasks처리 메서드를 추가하세요.- 실행을 누르고
GET /tasks를 보낸 다음, 라우트가 없는 경로에 어떤 응답이 오는지 확인하려면GET /task를 보내세요.
직접 해보기
import { Controller } 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 /tasks 요청에 목록으로 응답하는 메서드를 추가하세요.
}
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.