article thumbnail image
Published 2024. 11. 14. 21:20

라우트 가 많아지면 관리가 힘들다.

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
복사했습니다!