라우트 가 많아지면 관리가 힘들다.
express.Router()를 사용하면 여러 라우트를 독립적인 모듈로 작성하여 파일 단위로 관리할 수 있다.
이를 통해 코드의 재사용성과 가독성이 향상된다.
Router와 app의 차이점
🐥app 객체
Express 애플리케이션 전체를 나타낸다.
서버를 생성하고 설정하는 데 사용되며, app.use() 메소드를 통해 미들웨어나 라우트를 등록한다.
🐥Router 객체
독립적인 라우트 모듈을 생성한다.
이 객체를 사용해 특정 라우트 그룹을 만들고, 최종적으로 app.use()로 Express 애플리케이션에 등록한다.
Router 사용 방식
Router 객체를 사용하면 라우트를 모듈화할 수 있다.
이를 통해 관련된 라우트들을 하나의 파일에 모아 두고, 나중에 app.use()를 통해 Express 애플리케이션에 연결할 수 있다.
예를 들어, router.get("/cat/:id", ...)와 같은 라우트 정의들은 Router 객체를 통해 관리되며, 이 모듈은 app.use로 전체 앱에 추가된다.
코드 예시
cat 미들웨어들을 따로 분리했다.
이때 Express 객체 전체를 가져오는 것이 아니고 Router로 가져와 Cat에 대한 라우터들을 인스턴스로 등록해준 후 내보내기 한다.
cat.route.ts 파일
import { Cat, CatType } from "./cat.model";
import { Router } from 'express';
//app 객체 -> Express 앱 전체를 나타냄. 서버를 생성하고 설정하는 데 사용. app.use() 메소드를 통해 미들웨어나 라우트를 등록
//Router객체 -> 독립적인 라우트 모듈 생성. 이 객체를 사용해 특정 라우트 그룹을 만들고, 최종적으로 app.use()로 Express 애플리케이션에 등록한다.
const router = Router(); //여기서 라우터 인스턴스 생성
//READ CREATE 등등 고양이 관련 로직들~~~ -> 라우터에 등록
//등록된 라우터 export
export default router;
이렇게 export된 라우터를 받아 app 에서 등록
app.ts
import { error } from "console";
import * as express from "express";
import catRouter from "./cat/cat.route";
//app -> 하나의 서버
const app: express.Express = express();
const port: number = 8000;
//*logging middleware json 미들웨어 등등등~
app.use(catRouter); //고양이 라우터 등록
//*404 middleware 등등등~
app.listen(port, () => {
console.log(`server is on http://localhost:${port}`);
});
그럼 기존에 이렇게 하나로 이루어져 있던 흐름이 분리가 된다.
그림으로 표현하면 다음과 같다. (발그림 주의)
전 -> 후
'NestJS' 카테고리의 다른 글
[NestJS] Provider, Module (0) | 2024.11.20 |
---|---|
[NestJS] Controller (0) | 2024.11.20 |
[Express] CRUD 기능 만들기 (0) | 2024.11.14 |
[Express] 라우팅과 미들웨어 (1) | 2024.11.14 |
TypeScript와 Express로 Node.js 서버 구축하기 (7) | 2024.11.13 |