웹/Node.js

[Node.js] Express 4: 라우터(Router)

2021. 2. 20. 15:44
목차
  1. 라우터란?
  2. 라우터 사용하기 
  3. URL 파라미터 사용하기

라우터란?

라우터는 클라이언트의 요청 경로(path)를 보고 이 요청을 처리할 수 있는 곳으로 기능을 전달해주는 역할을 한다. 이러한 역할을 라우팅이라고 하는데, 애플리케이션 엔드 포인트 (URI)의 정의, 그리고 URI가 클라이언트 요청에 응답하는 방식을 의미한다. 예를 들어, 클라이언트가 /users 경로로 요청을 보낸다면 이에 대한 응답 처리를 하는 함수를 별도로 분리해서 만든 다음 get()메소드를 호출하여 라우터로 등록할 수 있다.

 

라우터 사용하기 

익스프레스에선 이러한 라우터를 미들웨어로서 제공하고 있다. 다음과 같은 순서로 라우터 미들웨어를 사용할 수 있다.

1. 라우터 객체 참조

2. 라우팅 함수 등록

3. 라우터 객체를 app 객체에 등록

 

이를 실제 코드로 표현하면 다음과 같다.

// 라우터 객체 참조
const router = express.Router();

// 라우팅 함수 등록
router.route('/process/login').get(...);
router.route('/process/login').post(...);
...

// 라우터 객체를 app 객체에 등록
app.use('/', router);

 

클라이언트에서 요청한 요청 경로에 따라 실행될 함수는 라우터(router) 객체를 사용해 등록한다.

router 객체의 route() 메소드를 통해 요청 경로를 지정할 수 있으며, get()이나 post() 등의 메소드를 호출하면 실행될 함수를 등록할 수 있다.

router.route(요청 경로).get(실행될 함수);
router.route(요청 경로).post(실행될 함수);

요청 패스를 라우터 객체에 등록할 때 사용하는 메소드엔 get(callback), post(callback), put(callback),delete(callback),all(callback) 등이 있다. 

 

실제론 이렇게 하나의 파일 안에서 모든 라우팅 함수를 등록하는 것이 아니라, 각 경로 별로 라우팅 함수를 정의한 다음 그것을 하나의 파일로 묶어 모듈화시킨다.

 

Express/server.js

const indexRouter = require('./routes/index');
const userRouter = require('./routes/user');

app.use('/', indexRouter);
app.use('/user', userRouter);

 

Express/routes/index.js

const router = express.Router();

router.get("/", (req, res) => {
...
});

module.exports = router;

 

Express/routes/user.js

const router = express.Router();

router.get("/", (req, res) => {
...
});

router.get("/:userId", (req, res) => {
...
});

...

module.exports = router;

 

URL 파라미터 사용하기

URL 파라미터는 요청 파라미터(query string)와 달리 URL 주소의 일부로 들어간다.

위의 routes/user.js에서 /:userId는 /user/ 뒤에 오는 값을 파라미터로 처리하겠다는 의미이다.

이렇게 지정한 파라미터는 req.params 객체 안에 들어간다. 따라서 :userId으로 표시된 부분에 담겨 전달된 값은 req.params.userId 속성으로 접근할 수 있다. 이것을 바로 토큰(Token)이라고 부른다.

 

라우팅하는 과정에서 등록되지 않은 경로로 요청이 들어오는 것을 처리하는 방법은 다음 에러 처리에서 살펴보도록 한다.

저작자표시 비영리 (새창열림)

'웹 > Node.js' 카테고리의 다른 글

[Node.js] Express 6: 쿠키와 세션 (Cookie & Session)  (2) 2021.02.22
[Node.js] Express 5: 에러 처리(Error Handling)  (0) 2021.02.22
[Node.js] Express 3: 미들웨어(Middleware)  (0) 2021.02.20
[Node.js] Express 2: 요청 객체와 응답 객체 (req & res)  (0) 2021.02.20
[Node.js] Express 1: app 객체  (0) 2021.02.19
  1. 라우터란?
  2. 라우터 사용하기 
  3. URL 파라미터 사용하기
'웹/Node.js' 카테고리의 다른 글
  • [Node.js] Express 6: 쿠키와 세션 (Cookie & Session)
  • [Node.js] Express 5: 에러 처리(Error Handling)
  • [Node.js] Express 3: 미들웨어(Middleware)
  • [Node.js] Express 2: 요청 객체와 응답 객체 (req & res)
코택
코택
TaxFree코택 님의 블로그입니다.
코택
TaxFree
코택
전체
오늘
어제
  • 분류 전체보기 (369)
    • Spring (29)
      • Spring (18)
      • 스프링 핵심 원리 - 고급편 (11)
    • Spring Batch (4)
    • JPA (4)
    • CS (89)
      • 자료구조 (2)
      • 네트워크 (5)
      • 운영체제 (1)
      • 데이터베이스 (4)
      • SQL (7)
      • 알고리즘 이론 (4)
      • 알고리즘 문제 풀이 (66)
    • 웹 (28)
      • React.js (4)
      • Next.js (1)
      • Node.js (14)
      • FastAPI (4)
      • Django (5)
    • 프로그래밍 언어 (45)
      • Python (5)
      • Java + Kotlin (29)
      • JavaScript + TypeScript (11)
    • 테스트코드 (26)
      • ATDD, 클린 코드 with Spring (4)
      • 이규원의 현실 세상의 TDD: 안정감을 주는 코드.. (20)
    • 인프라 (6)
      • AWS (2)
      • Kubernetes (4)
    • 트러블슈팅 (25)
    • 책 (89)
      • Effective Java (54)
      • Effective Kotlin (14)
      • 도메인 주도 개발 시작하기: DDD 핵심 개념 정.. (11)
      • 웹 프로그래머를 위한 데이터베이스를 지탱하는 기술 (6)
      • 도메인 주도 설계 첫걸음 (4)
    • Git (10)
    • 회고 (5)
    • etc (8)

블로그 메뉴

  • 홈
  • 방명록
  • 관리
  • GitHub
  • LinkedIn

공지사항

  • 스킨 관련

인기 글

태그

  • Shortest Path
  • 그래프
  • mysql
  • BOJ
  • Git
  • 백준
  • fastapi
  • 장고
  • 깊이 우선 탐색
  • atdd
  • 브루트포스
  • 그래프 탐색
  • 파이썬
  • http
  • dp

최근 댓글

최근 글

hELLO · Designed By 정상우.
코택
[Node.js] Express 4: 라우터(Router)
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.