Express.js Reference
Express.js 웹 프레임워크 레퍼런스
Express.js Reference 소개
Express.js 레퍼런스는 Express 프레임워크로 HTTP 서버와 REST API를 구축하는 Node.js 백엔드 개발자를 위한 실용적인 치트 시트입니다. 프로덕션 Express 애플리케이션 구축에 필요한 6가지 핵심 범주를 다룹니다: HTTP 메서드와 라우트 파라미터를 이용한 라우팅, 미들웨어 등록과 체이닝, 요청 데이터 접근(params, query, body, headers, cookies, 파일 업로드), 응답 메서드(JSON, 리다이렉트, 렌더, 쿠키, 파일 다운로드), 에러 처리 패턴, 앱 설정.
이 레퍼런스는 Express를 매일 사용하는 풀스택 JavaScript 개발자, Node.js 백엔드 엔지니어, 부트캠프 학생이 활용합니다. app.use(express.json()) 설정부터 라우트 수준 인증 미들웨어 구축, 에러 전파를 포함한 비동기 라우트 처리, 크로스 오리진 요청을 위한 CORS 설정까지 실제 JavaScript 코드 스니펫과 함께 정확한 API 호출 패턴을 제공합니다.
레퍼런스는 6가지 카테고리로 구성됩니다: 라우팅(app.get/post/put/delete, req.params 라우트 파라미터, 모듈화 라우트를 위한 express.Router, app.route() 체이닝, 정규식/와일드카드 패턴), 미들웨어(app.use, 커스텀 로거, 라우트 수준 인증 미들웨어, 비동기 핸들러 래퍼), 요청(req.params/query/body, req.headers, cookie-parser, multer 파일 업로드), 응답(res.json/status/send, res.redirect, EJS와 res.render, res.cookie/clearCookie, res.download/sendFile), 에러 처리(4인자 에러 미들웨어, 커스텀 AppError 클래스, 404 캐처, express-validator), 설정(앱 초기화, app.set, cors 패키지 CORS, helmet 보안 헤더).
주요 기능
- app.get, post, put, delete를 이용한 HTTP 메서드 라우팅과 라우트 파라미터 추출
- 모듈화 라우트 파일을 위한 express.Router와 app.route() 메서드 체이닝
- next()와 에러 전달 패턴이 포함된 라우트 수준 인증 미들웨어
- Promise 거부를 에러 미들웨어로 전파하는 비동기 라우트 핸들러 래퍼
- req.params, req.query, req.body, req.headers, req.cookies 접근 패턴
- dest 설정이 포함된 단일/다중 파일 업로드용 multer 미들웨어
- res.json, res.status, res.redirect, res.render, res.cookie, res.download API
- cors 패키지를 이용한 CORS 설정과 helmet 보안 헤더 설정
자주 묻는 질문
Express.js란 무엇이고 어떤 용도로 사용하나요?
Express.js는 Node.js의 내장 HTTP 서버 위에 라우팅과 미들웨어 기능을 제공하는 최소한의 비독선적인 웹 프레임워크입니다. REST API, 웹 서버, 서버 사이드 렌더링 애플리케이션, 백엔드 서비스 구축에 사용됩니다. Express는 가장 널리 배포된 Node.js 프레임워크로 MERN 및 MEAN 스택의 핵심을 이룹니다.
Express에서 app.use()와 app.get()의 차이는 무엇인가요?
app.use()는 경로 접두어와 일치하는 모든 HTTP 메서드에 적용되는 미들웨어를 등록합니다. express.json(), cors(), morgan() 같은 미들웨어를 전역으로 마운트하거나 서브 라우터를 마운트할 때 사용합니다. app.get()은 특정 경로에 대한 HTTP GET 요청에만 일치하는 라우트 핸들러를 등록합니다. app.get/post/put/delete로 추가한 라우트 핸들러는 더 구체적이며 전역 미들웨어 이후에 실행됩니다.
Express.js에서 에러를 처리하는 방법은?
4개의 파라미터(err, req, res, next)를 가진 에러 처리 미들웨어를 정의하고 마지막에 app.use()로 등록합니다. Express는 next(err)에 전달된 모든 에러를 자동으로 이 미들웨어로 라우팅합니다. 비동기 라우트 핸들러의 경우 try/catch를 사용하거나 거부된 Promise를 캐치하여 next(err)를 호출하는 asyncHandler 함수로 래핑합니다. status 속성이 있는 커스텀 AppError 클래스를 만들어 일관된 HTTP 에러 응답을 보내세요.
Express에서 쿼리 파라미터와 요청 본문에 접근하는 방법은?
쿼리 파라미터(예: /items?sort=name)는 req.query.sort로 접근합니다. URL 경로 파라미터(예: /items/:id)는 req.params.id로 접근합니다. JSON 요청 본문은 app.use(express.json()) 미들웨어 추가 후 req.body로 사용할 수 있습니다. URL 인코딩 폼 데이터는 app.use(express.urlencoded({ extended: true }))가 필요합니다. 파일 업로드는 req.file이나 req.files를 채우기 위해 multer 미들웨어가 필요합니다.
여러 라우트 파일로 대규모 Express 애플리케이션을 구조화하는 방법은?
express.Router()를 사용하여 각 리소스별 별도 라우터 인스턴스를 만듭니다. 라우터에 라우트를 정의한 다음 app.use("/api/users", userRouter)로 메인 앱에 마운트합니다. 각 라우터를 자체 파일(예: routes/users.js)에 보관하고 메인 app.js에서 임포트합니다. 이렇게 하면 관련 라우트가 함께 유지되고 API가 성장할수록 코드베이스를 더 쉽게 유지 관리할 수 있습니다.
Express에서 CORS를 활성화하는 방법은?
cors 패키지를 설치하고 완전한 크로스 오리진 접근을 위해 app.use(cors())를 추가하거나 옵션으로 설정합니다: app.use(cors({ origin: "https://example.com", methods: ["GET", "POST"], credentials: true })). 세밀한 제어를 위해 cors 미들웨어를 특정 라우트에만 전달합니다. 모든 일치하는 응답에 헤더가 추가되도록 라우트 정의 전에 항상 CORS를 설정하세요.
Express에서 파일 업로드를 처리하는 방법은?
multer 미들웨어를 사용합니다. 메모리 또는 디스크 저장소의 경우 multer({ dest: "uploads/" })를 호출하고 하나의 파일에는 upload.single("fieldname")을, 여러 파일에는 upload.array("fieldname", max)를 사용합니다. 업로드된 파일은 req.file(단일) 또는 req.files(다중)에서 originalname, mimetype, size, path 속성과 함께 사용할 수 있습니다. 원본 파일명을 신뢰하지 말고 저장 전에 정제하세요.
Express 애플리케이션에서 helmet의 역할은 무엇인가요?
helmet()은 보안 관련 HTTP 응답 헤더를 설정하는 미들웨어 함수 모음입니다. XSS 방지를 위한 Content-Security-Policy, 클릭재킹 방지를 위한 X-Frame-Options, MIME 타입 스니핑 방지를 위한 X-Content-Type-Options, HTTPS 적용을 위한 Strict-Transport-Security 등을 설정합니다. 미들웨어 스택 상단에 app.use(helmet())을 추가하면 별도 설정 없이 합리적인 보안 기준을 제공합니다.