[Node.js] Express란?

artp·2025년 4월 20일
0

node.js

목록 보기
4/9
post-thumbnail

Express란?

Express는 Node.js 환경에서 가장 널리 사용되는 웹 애플리케이션 프레임워크입니다.
쉽게 말해, Node.js로 HTTP 서버를 만들 때 복잡한 코드를 단순하게 줄여주는 도구입니다. 웹 서버 개발을 더 빠르고 간편하게 할 수 있도록 도와주는 역할을 합니다.

Express를 사용하는 이유?

Node.js만으로도 웹 서버를 만들 수 있지만, 다음과 같은 불편함이 있습니다.

const http = require("http");
const server = http.createServer((req, res) => {
	if (req.url === "/") {
      res.write("Hello Wolrd");
      res.end();
    }
});
  • URL마다 직접 조건문을 써야 함
  • 요청 메서드(GET, POST 등)마다 분기 처리가 복잡함
  • 본문 파싱, 라우팅, 상태코드 관리 등 모두 수작업

이러한 복잡한 과정을 해결해주는 프레임워크가 바로 Express입니다.
Express는 Node.js의 복잡한 서버 구현 코드를 간결하고 직관적인 코드로 바꿔주며, 웹 서버 개발을 빠르고 편하게 할 수 있도록 도와줍니다.

설치 방법

npm install express
  • 위 명령어로 설치하면, package.jsondependencies에 자동으로 등록됩니다.

Express 기본 구조

Express를 사용하면 복잡한 Node.js 서버 코드를 간단하게 만들 수 있습니다.
가장 기본적인 Express 서버 코드는 다음과 같습니다.

const express = require("express");
const app = express();

app.get("/", (req, res) => {
	res.send("Hello Express!");
});

app.listen(3000, () => {
	console.log("서버 실행 중: http://localhost:3000");
});

코드 설명

코드설명
express()서버 인스턴스를 생성합니다. (앱 객체)
app.get()GET 요청을 받을 때 실행할 콜백 함수를 등록합니다.
res.send()클라이언트에 응답을 보냅니다.
app.listen()서버를 3000번 포트에서 실행합니다.

import를 사용하는 Express 코드

최신 Express 튜토리얼에서는 require() 대신 import를 사용하는 예제도 많습니다.
이는 Node.js의 ES 모듈(ESM) 방식을 사용하는 경우입니다.

Node.js는 원래 CommonJS 방식(require, module.exports)을 사용했습니다.

// CommonJS 방식 (기존 스타일)
const express = require("express");

최신 Node.js에서는 ES 모듈(ECMAScript Module) 방식도 지원합니다.

// ES 모듈 방식 (최신 스타일)
import express from "express";

CommonJS vs ES 모듈

구분CommonJS (require)ES 모듈 (import)
기본 방식Node.js 기본 방식브라우저 및 ES6 표준
문법require() / module.exportsimport / export
설정 필요없음package.json"type": "module" 설정

ES 모듈 방식 사용 시 설정

package.json에 다음 설정을 추가해야 합니다.

Node.js 입장에서는 .js 파일을 보고 “이걸 CJS 방식으로 읽을까? ESM으로 읽을까?” 결정해야 하는데, 이걸 판단할 기준이 바로 package.json의 "type": "module" 설정입니다.

// package.json
{
	"type": "module"
}
  • 이 설정을 하면 Node.js가 .js 파일을 ESM 방식으로 해석합니다. 따라서 아래와 같이 import를 사용할 수 있습니다.
import express from "express";
import dotenv from "dotenv";

라우팅 처리 예시

app.get("/about", (req, res) => {
	res.send("About 페이지입니다.");
});

app.post("/login", (req, res) => {
	res.send("로그인 요청을 처리합니다.");
});
  • HTTP 메서드(GET, POST 등)에 따라 서로 다른 핸들러 작성 가능
  • 각 경로(/about,/login 등)에 대한 로직을 분리해서 관리 가능

자주 사용하는 기능

기능코드 예시설명
JSON 파싱app.use(express.json());요청 body의 JSON 데이터를 자동으로 파싱해줌
쿼리 파라미터req.query.nameURL 뒤의 ?name=value에서 값 추출
URL 파라미터req.params.id/user/:id 형식의 경로에서 값 추출
상태코드 설정res.status(404).send("Not Found")HTTP 응답 코드 직접 설정 가능
JSON 응답res.json({ msg: "OK" })클라이언트에게 JSON 형식 데이터를 반환 (API 응답용)

Express와 함께 자주 사용하는 패키지들

패키지용도
nodemon코드 변경 시 서버 자동 재시작
dotenv환경변수 관리 (.env 파일 사용)
body-parser요청 바디(body) 파싱 (express 4.16 이후부터는 내장됨)
corsCORS(Cross-Origin) 문제 해결
morgan요청 로그 기록 미들웨어
profile
donggyun_ee

0개의 댓글