[NestJS] 5. route를 분리하고 모듈화하기

주수호·2022년 5월 14일
0
post-thumbnail

express를 간단하게 사용한다면야, app.ts에 다 넣는 방식을 사용 할 수 있겠지만,

코드가 상당히 길어집니다. 이제 모듈을 분리해주는 작업이 필요하겠죠.

app.get을 통해 여러 라우터를 만들었습니다. 이제 그것을 포함하는 한단계위의 라우터(app.get기준에서는 middleware의 역할이겠죠.) 이를 만들어봅니다.

cats라는 큰 폴더에, 타입과 임시데이터가 있는 model파일
그리고 route파일하나를 만듭니다.

//cats.route.ts
import { Cat, CatType } from "./cats.model";
import { Router } from "express";

const router = Router();

// 고양이 전체 데이터 조회
router.get("/cats", (req, res) => {
  try {
    const cats = Cat;
    // throw new Error("db connect error"); => 직접 에러를 던져볼 수 있습니다.
    res.status(200).send({
      success: true,
      data: {
        cats,
      },
    });
  } catch (error) {
    res.status(400).send({
      success: false,
      error: error.message,
    });
  }
});

// CREATE 새로운 고양이 추가 api
router.post("/cats", (req, res) => {
  try {
    const data = req.body;
    // console.log(req.body);
    console.log(data);
    Cat.push(data);
    res.status(200).send({
      success: true,
      data: {},
    });
  } catch (error) {
    res.status(400).send({
      success: false,
      error: error.message,
    });
  }
});

// 특정 고양이 데이터 조회 [동적 라우팅]
router.get("/cats/:id", (req, res) => {
  try {
    const params = req.params;
    const cat = Cat.find((cat) => {
      return cat.id === params.id;
    });
    // throw new Error("db connect error"); => 직접 에러를 던져볼 수 있습니다.
    res.status(200).send({
      success: true,
      data: {
        cat,
      },
    });
  } catch (error) {
    res.status(400).send({
      success: false,
      error: error.message,
    });
  }
});

export default router;

모듈화를 했을 뿐 기능상의 차이는 전혀 없습니다. 이렇게 라우터와 미들웨어의 개념을 잘 적용하여 모듈화를 처리할 수 있는 것을 잘 활용해야합니다.

profile
항상 준비하는 엔지니어

0개의 댓글