Search

#008 #고양이 route 분리, 모듈화

 라우트 모듈화의 필요성

router랑 middleware가 한 곳에 다 모여있으니까, 3개정도만 되도 코드가 100줄이 넘어가게 된다. 분리가 필요함!!

 폴더 구조 리팩토링

model도 cats로 폴더를 만들고 분리 시켜주자.

route도 분리

모든 app.get에 app을 router로 변경하고, Router() 객체를 생성한다.
중간 router가 미들웨어 역할을 한다. 왼쪽에 있는 라우터들은 모듈화 작업이 되었음. 미들웨어랑 있는 라우터는 router모듈을 불러오는 역할

cats.route.ts 전체 코드

 라우터 모듈 호출

미들웨어 사이에 있는 라우터는 라우터 모듈을 호출하는 역할을 한다. 라우터를 호출하기 위해서는 모듈에서 export작업이 되어야 한다.
express에서 Router 라이브러리를 사용 임포트 한다.
다른 곳에서 호출 하기 위해서는 export가 되어야 한다.

 app.ts 에서 router 호출하기

import catsRouter from './cats/cats.route';
JavaScript
복사
위 문법으로 import를 먼저 한다.
원하는 위치에 app.use(catsRouter); 로 모듈을 호출 하면 된다.
정상 작동이 된 것을 볼 수 있다.

 Post 요청 테스트 확인

post 요청 역시 정상 작동이 된 것을 확인 할 수 있다.
req에 postman에서의 요청 데이터가 담겨 있다. Cat이라는 배열에 push로 요청데이터를 생성 한다. 성공시 반환할때 요청데이터를 그대로 응답한다.

 Router 내부 post 코드

import { Cat, CatType } from "./cats.model"; import { Router } from "express"; const router = Router(); //* CREATE 새로운 고양이 추가 api -> POST router.post("/cats", (req, res) => { try { const data = req.body; // 고양이 데이터 생성 Cat.push(data); res.status(200).send({ success: true, // 생성된 데이터 그대로 반환 data: { data }, }); } catch (error) { res.status(400).send({ success: false, error: (error as Error).message, }); } });
JavaScript
복사