
대부분 기본 Nest class는 서비스, 레포지터리, 팩토리, 핼퍼 등 Provider 로 취급될수 있습니다.
Provider 는 종속성을 주입할 수 있습니다. (서로 다양한 관계를 만들고 객체의 인스터스를 연결하는 기능)
컨트롤러에서 데이터 유효성을 체크하거나 DB에 아이템을 생성하는 등의 작업을 합니다.
@Injectable 데코레이터로 감싸져서 모듈에 제공되며, 어플리케이션 전체에서 사용 가능합니다.
유저 -> Request -> controller -> Service -> Controller -> Response -> 유저
module 파일에서 provider를 등록해줘야 사용가능합니다.
module 파일 안에 providers 항목 안에 해당 모듈에서 사용하고자 하는 Provider을 넣으면 됩니다.
새로 프로젝트를 생성해 주고
$ nest new nestjs-board-app
module과 Controller, Service 도 생성해 줍니다.
$ nest g module boards
$ nest g controller boards --no-spec
$ nest g service --no-spec
그리고

몇 개의 파일을 삭제하여 위 파일 목록과 똑같이 만들어 줍니다.

자동으로 module에 Service가 추가된 모습을 확인합니다.

boards.controller.ts 에 위와 같이 코드를 입력하여 줍니다.
+참고

<출처 : inflearn 따라하며 배우는 nest.js 강의자료>
또한, 접근제한자를 이용하여 이 코드를 아래와 같이 간단하게 쓸 수 있습니다.

boards.service.ts 에서

@Injectable()
export class BoardsService {
private boards = [];
getAllBoards() {
return this.boards;
}
}
위와 같이 코드를 작성해 줍니다
boards.controller.ts 에서

@Controller('boards')
export class BoardsController {
constructor(private boardsService: BoardsService){ }
@Get()
getAllBoard(){
return this.boardsService.getAllBoards();
}
}
위와 같이 코드를 작성하여 줍니다.
터미널에
$ npm run start:dev
http://localhost:3000/boards
위 링크에 들어가면

정상적으로 나오는 것을 확인 할 수 있습니다.