Express 기본 라우팅
Express 기본 라우팅
Express를 쓰면 URL과 HTTP 메서드에 따라 서버가 어떻게 응답할지 결정할 수 있어요. 이걸 **라우팅(routing)**이라고 해요. 각 라우트는 URI(또는 경로)와 특정 HTTP 요청 메서드(GET, POST 등)에 대한 응답 방식을 정해요. 그리고 각 라우트에는 하나 이상의 핸들러 함수가 연결될 수 있어요.
라우트 정의는 이런 구조를 가져요.
app.METHOD(PATH, HANDLER);
각 부분은 이렇게 의미해요.
app—express의 인스턴스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 메서드 이름을 딴 함수가 모두 라우트 정의의 골격을 공유해요. PATH와 HANDLER만 바꾸면 되죠. HTTP 동사에 맞는 응답 로직을 넣는 것이 Express 라우팅의 핵심이에요.
더 복잡한 패턴(URL 파라미터, 정규표현식, 여러 핸들러)은 라우팅 가이드에서 다뤄요.