Express 기본 라우팅

Express 기본 라우팅

Express를 쓰면 URL과 HTTP 메서드에 따라 서버가 어떻게 응답할지 결정할 수 있어요. 이걸 **라우팅(routing)**이라고 해요. 각 라우트는 URI(또는 경로)와 특정 HTTP 요청 메서드(GET, POST 등)에 대한 응답 방식을 정해요. 그리고 각 라우트에는 하나 이상의 핸들러 함수가 연결될 수 있어요.

출처: Basic routing · Express.js

라우트 정의는 이런 구조를 가져요.

app.METHOD(PATH, HANDLER);

각 부분은 이렇게 의미해요.

  • appexpress의 인스턴스
  • METHOD — 소문자의 HTTP 요청 메서드
  • PATH — 서버의 경로
  • HANDLER — 라우트가 매칭됐을 때 실행되는 함수

(이 튜토리얼은 express의 인스턴스 app이 만들어져 있고 서버가 실행 중이라고 가정해요. 앱을 만들고 시작하는 데 익숙하지 않다면 Hello world 예제를 보면 돼요.)

간단한 라우트를 정의하는 예시들을 볼게요.

GET 요청 — 홈페이지

app.get('/', ...)은 루트 경로에 대한 GET 요청에 "Hello World!"로 응답해요.

app.get('/', (req, res) => {
  res.send('Hello World!')
})

TypeScript에서는 request와 response 타입에 주석을 달 수 있어요.

import { type Request, type Response } from 'express';

app.get('/', (req: Request, res: Response) => {
  res.send('Hello World!')
})

POST 요청 — 루트 라우트

app.post('/', ...)은 루트 경로에 대한 POST 요청(앱의 홈페이지)에 응답해요.

app.post('/', (req, res) => {
  res.send('Got a POST request')
})

PUT 요청 — /user

app.put('/user', (req, res) => {
  res.send('Got a PUT request at /user')
})

DELETE 요청 — /user

app.delete('/user', (req, res) => {
  res.send('Got a DELETE request at /user')
})

이렇게 app.get(), app.post(), app.put(), app.delete()처럼 HTTP 메서드 이름을 딴 함수가 모두 라우트 정의의 골격을 공유해요. PATHHANDLER만 바꾸면 되죠. HTTP 동사에 맞는 응답 로직을 넣는 것이 Express 라우팅의 핵심이에요.

더 복잡한 패턴(URL 파라미터, 정규표현식, 여러 핸들러)은 라우팅 가이드에서 다뤄요.

더 알아보기