[Nest js] basic - controller, service로 요청 처리하기

giyeon·2022년 3월 11일
0

nest js - basic

목록 보기
2/8


이 포스팅은 Youtube 'John Ahn'의 '따라하면서 배우는 NestJS'를 참고했습니다.

⚙️ controller, Service로 요청 처리

클라이언트에서 요청이 들어오면 서버는 그에 맞는 응답을 해줘요.
어떤 요청인지 구분 하는 것은 controller의 역할이고,
구분된 요청을 어떤식으로 처리할 건지, 처리된 요청을 controller에 보내주는 역할은 service가 합니다.

📕 service

먼저 요청을 처리해주는 service파일을 볼게요.

boards.service.ts

import { Injectable } from '@nestjs/common';

//Nest js는 Injectable을 이용하여 다른 컴포넌트에서도 이 service를 이용할 수 있게 합니다. 
@Injectable()
export class BoardsService {
  //private를 해주지 않으면 다른 component에서 수정할 가능성이 있어 사전에 막아주는 역할을 해요.
  //실제 DB연동은 아직 하지 않고 dummy data로 실습 진행합니다.
  //boards 라는 array data를 데이터 베이스에서 꺼내왔다고 가정할게요.
  
  private boards = [];

  getAllBoards() {
    return this.boards;
  }
}

앞서 말했듯 service는 실질적인 요청을 처리하는 역할을 합니다.
boards 라는 array data를 데이터베이스에서 꺼내왔다고 가정하고,
getAllBoards() method는 boards를 return 해줘요.
이 method를 controller에서 이용해볼게요.

📕 controller

boards.controller.ts

import { Controller, Get } from '@nestjs/common';
import { BoardsService } from './boards.service';

@Controller('boards')
export class BoardsController {
  constructor(private boardsService: BoardsService) {}

  @Get('/')
  getAllBoard() {
    return this.boardsService.getAllBoards();
  }
}

제일먼저 정의한 service를 사용할 수 있게 불러와요.
import로 파일을 연결시켜주고, class 내부 constructor에서 service를 인자로 넣어줘요 .

그런다음 Get요청을 정의합니다.
controller에서 'boards' 라고 정의했으니 port를 3000번이라고 가정한다면, http://localhost:3000/boards url로 Get요청을 받도록 설정했어요.

이 Get은 service에서 정의한 getAllBoards method를 가져와 사용하고, service에서 리턴해준 값을 클라이언트에 보내주게 됩니다.


다시한번 정리하자면
클라이언트에서 요청을 보내면 먼저 컨트롤러에서 어떤 요청인지 구분하고, 알맞은 요청 경로에 라우팅을 해서 해당 경로로 들어가게 해줍니다. 그런 후, 실질적인 요청을 처리하기 위해 서비스로 들어가며 그 요청에 맞는 로직을 서비스에서 처리해 준 후 컨트롤러에 리턴값을 보내줘요.

서비스로부터 리턴 값을 받은 컨트롤러는 그 값을 클라이언트에 보내주게 돼요.
그래서 요청을 처리하는 부분은 서비스이고, 컨트롤러는 서비스에서 보내준 결과값을 리턴해 주는 역할을 합니다. 🙋🏻‍♂️

profile
Web , App developer wannabe 🧑🏻‍💻

0개의 댓글