프로바이더는 Nest의 기본 개념입니다. 대부분의 기본 Nest 클래스는 서비스, 리포지토리, 팩토리, 헬퍼등 프로바이더로 취급될 수 있습니다. 프로바이더의 주요 아이디어는 종속성으로 주입할 수 있다는 것입니다. 즉, 객체는 서로 다양한 관계를 만들 수 있으며 객체의 인스턴스를 "연결"하는 기능은 대부분 Nest 런타임 시스템에 위임될 수 있습니다.
app.module.ts
@Module({
imports: [],
controllers: [AppController],
providers: [AppService], //AppService는 공급자로 취급된다
})
/////////////////////////////
app.service.ts
@Injectable()//공급자로 취급이 되어있는 것은 의존성 주입이 가능하다
export class AppService {
getHello(): string {
return 'Hello World!';
}
}
/////////////////////////////
app.controller.ts
@Controller('cats')
export class AppController {
constructor(private readonly appService: AppService) {} //인스턴스로 받아 사용할 수 있다.
//* localhost:8000/cats/hello
@Get('hello/:id/:name')
getHello(
@Req() req: Request,
@Body() Body,
@Param() param: { id: string; name: string },
): string {
// console.log(req);
// console.log(param);
// return 'hello world';
return this.appService.getHello();//인스턴스로 받아 사용할 수 있다.
}
}