Skip to content

`20.11.03 회의록

yejineee edited this page Nov 6, 2020 · 1 revision

백엔드 api 구현 구조

  • 목적

    1. 서비스, 컨트롤러, 라우터의 역할을 잘 나눠서 api 구현을 하자!
    2. 의존성 주입을 통해 단위 테스트를 더 쉽게 할 수 있도록 하자.
  • 역할

    • 라우터 : 말 그대로 라우팅 역할을 한다. url에 대한 컨트롤러를 실행시킨다.
    • 컨트롤러: 요청에 대해 처리하고, 응답을 보낸다.
    • 서비스: 컨트롤러에서 필요한 비즈니스 로직을 처리한다.
  • /routes 폴더 안에 모델 별로 폴더를 생성하고, 아래의 파일을 만든다.

    • index.js 파일

      /issues에서 더 깊은 레벨의 url에 대한 라우팅을 담당한다.

      컨트롤러 객체를 초기화하고, 각 라우터에 대한 컨트롤러를 지정한다.

    • **-controller.js

      • 컨트롤러 함수를 정의한다.
      • 의존하는 서비스 객체를 파라미터로 받는다.
      • 컨트롤러 이름은 {모델이름}{Controller}이며, 파스칼 케이스로 작성한다.
      const **Controller = (**Service) => ({
      	readList(req, res, next){
      		...
      	},
      	createLabel(req, res, next){
      		...
      	},
      })
      	
    • **-controller.test.js

      • controller의 테스트 코드이다.
  • /services 폴더에 각 모델 이름으로 파일을 생성

    • req, res를 전달받지 않는다.
    • http 상태 코드와 같은 것들을 반환하지 않는다.
    • 의존하는 모델은 객체로 묶여서 파라미터로 전달된다.
    • 서비스 이름은 {모델이름}{Service}이며 파스칼 케이스를 작성한다.
    const **Service = ({**Model}) => ({
      getLabelList() {
        return **Model.findAll();
      },
    });
    
    export default **Service;
Clone this wiki locally