반응형
***본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.
@Module({
imports: [],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
실제 모듈에다 넣는 프로바이더의 클래스 이름은 왜 서비스일까?
스코프가 달라서 그렇다. 서비스는 프로바이더이다. 모든 서비스가 프로바이더는 아니다.
nest.js는 로직을 프로세싱을 하는 클래스의 이름은 서비스라고 짓자고 약속을 했다. 그리고 IOC 컨테이너에서 관리하자
변경 이유 및 개선된 점
@Get(':id')
getMovie(@Param('id')id:string ){
return this.appService.getMovieById(+id);
}
@Post()
postMovie(
@Body('title') title: string,
){
this.appService.createMovie(title);
}
@Patch(':id')
patchMovie(
@Param('id') id: string,
@Body('title') title : string,
){
this.appService.updateMovie(+id,title);
}
@Delete(':id')
deleteMovie(
@Param('id') id:string,
){
this.appService.deleteMovie(+id);
}
- 비즈니스 로직을 AppService에 위임
- 컨트롤러는 요청을 받고 서비스 계층에서 데이터 처리 후 반환하는 역할만 수행함.
- 비즈니스 로직(find(), filter(), splice() 등)을 서비스 계층으로 이동하여 코드가 더 깔끔해짐.
- DB 연동이 쉬워짐
- 기존에는 movies 배열을 직접 조작했지만, 이제는 this.appService를 통해 관리하므로
이후 TypeORM을 활용해 DB 연동을 할 때도 컨트롤러를 수정할 필요가 없음.
- 기존에는 movies 배열을 직접 조작했지만, 이제는 this.appService를 통해 관리하므로
- 컨트롤러가 가벼워지고 유지보수가 쉬워짐
- 컨트롤러는 단순히 서비스 계층에 요청을 전달하고 응답을 반환하는 역할만 하도록 개선됨.
- 서비스 계층이 추가되면서 getMovieById(), createMovie(), updateMovie() 등의 메서드가 재사용 가능해짐.
#패스트캠퍼스 #직장인자기계발 #직장인공부 #환급챌린지 #패스트캠퍼스후기 #오공완
https://bit.ly/4hTSJNB
반응형