Nestjs 튜토리얼 따라하기 3편
26 Jan 2021 | BackendNestjs 튜토리얼 따라하기 3편
Providers
- Provider는 종속성을 주입하는 기능을 수행함
@Injectable()
데코레이터를 사용
# scr폴더 내에 cats폴더 생성
nest g service cats
위 명령어를 이용하여 프로젝트를 생성하면 다음과 같은 구조를 가진다.
├── src
│ ├── app.controller.ts
│ ├── app.module.ts
│ ├── main.ts
│ └── cats
│ └── cats.service.ts
cats.service.ts에 다음과 같은 코드를 입력한다.
// cats.service.ts
import { Injectable } from '@nestjs/common';
import { Cat } from './interfaces/cat.interface';
@Injectable()
export class CatsService {
private readonly cats: Cat[] = [];
create(cat: Cat) {
this.cats.push(cat);
}
findAll(): Cat[] {
return this.cats;
}
}
이를 사용하기 위해서 CatsController에 연결해준다.
// cats.controller.ts
import { Controller, Get, Post, Body } from '@nestjs/common';
import { CreateCatDto } from './dto/create-cat.dto';
import { CatsService } from './cats.service';
import { Cat } from './interfaces/cat.interface';
@Controller('cats')
export class CatsController {
constructor(private catsService: CatsService) {}
@Post()
async create(@Body() createCatDto: CreateCatDto) {
this.catsService.create(createCatDto);
}
@Get()
async findAll(): Promise<Cat[]> {
return this.catsService.findAll();
}
}
생성자를 통하여 catsService를 선언하고 catsService에 선언된 함수를 사용하였다.
CatsService, CatsController를 정의하였으므로 이를 수행할 수 있도록 module에 등록하여야 한다.
// app.module.ts
import { Module } from '@nestjs/common';
import { CatsController } from './cats/cats.controller';
import { CatsService } from './cats/cats.service';
@Module({
controllers: [CatsController],
providers: [CatsService],
})
export class AppModule {}