노드 Node.js
6. Express.js로 서버 만들기: 기본 개념과 라우팅
안녕하세요! 태마입니다.
Node.js 기초 강좌입니다.
강좌의 경우
1. 주제 간단 정리
2. 상세 주제 정리
으로 이루어져 있습니다.
노드 Node.js
포스팅 시작하겠습니다 :)
1. 주제 간단 정리
1. Express.js란?
Express.js(이하 Express)는 Node.js에서 가장 많이 사용되는 웹 프레임워크입니다.
기본적인 HTTP 서버를 쉽게 만들고, API를 개발할 수 있도록 도와줍니다.
📌 Express.js의 특징
✔ 간결한 문법 → Node.js의 기본 HTTP 모듈보다 사용이 쉬움
✔ 미들웨어 지원 → 요청과 응답을 쉽게 조작 가능
✔ 라우팅 기능 제공 → RESTful API 설계에 최적화됨
✔ 확장성 뛰어남 → 다양한 라이브러리와 함께 사용 가능
2. Express.js 설치 및 프로젝트 설정
✅ 1) 프로젝트 폴더 생성 및 Express 설치
mkdir my-express-app && cd my-express-app
npm init -y # package.json 생성
npm install express # Express.js 설치
📌 npm install express 명령어로 Express 프레임워크를 설치
✅ 2) Express 서버 기본 코드 작성
const express = require("express");
const app = express();
app.get("/", (req, res) => {
res.send("Hello, Express!");
});
app.listen(3000, () => {
console.log("서버가 3000번 포트에서 실행 중!");
});
📌 **app.listen(3000)**을 사용하여 3000번 포트에서 서버 실행
✅ 3) 서버 실행하기
node index.js
📌 실행 후 브라우저에서 http://localhost:3000에 접속하면 **"Hello, Express!"**가 출력됨
✅ 여기까지 Express.js의 기본 개념과 서버 실행 방법을 배웠습니다!
👉 "그렇다면, Express.js에서 라우팅을 어떻게 관리할까?"
✅ 2부에서 Express의 라우팅 시스템을 배워봅시다!
2. 상세 주제 정리
1. 라우팅(Routing)이란?
라우팅은 클라이언트의 요청 URL에 따라 다른 응답을 반환하는 기능입니다.
Express에서는 app.get(), app.post(), app.put(), app.delete() 같은
메서드를 사용하여 라우팅을 설정할 수 있습니다.
✅ 기본적인 라우팅 예제
const express = require("express");
const app = express();
app.get("/", (req, res) => {
res.send("홈 페이지");
});
app.get("/about", (req, res) => {
res.send("소개 페이지");
});
app.listen(3000, () => {
console.log("서버 실행 중!");
});
📌 클라이언트의 요청 URL에 따라 다른 페이지를 반환할 수 있음!
2. HTTP 메서드(GET, POST, PUT, DELETE) 처리
✅ Express에서 HTTP 요청 처리하기
메서드설명
GET | 데이터를 가져올 때 사용 |
POST | 데이터를 생성할 때 사용 |
PUT | 데이터를 수정할 때 사용 |
DELETE | 데이터를 삭제할 때 사용 |
✅ GET 요청과 POST 요청 처리 예제
const express = require("express");
const app = express();
app.use(express.json()); // JSON 요청 본문 처리
app.get("/users", (req, res) => {
res.send("모든 사용자 정보 조회");
});
app.post("/users", (req, res) => {
const newUser = req.body;
res.send(`새 사용자 추가: ${JSON.stringify(newUser)}`);
});
app.listen(3000, () => {
console.log("서버 실행 중!");
});
📌 GET 요청은 데이터를 가져오고, POST 요청은 데이터를 생성하는 데 사용됨
3. 동적 라우팅과 URL 매개변수 처리
✅ Express에서는 동적 라우팅을 지원하며, URL에서 값을 추출할 수 있음
app.get("/users/:id", (req, res) => {
const userId = req.params.id;
res.send(`사용자 ID: ${userId}`);
});
📌 req.params.id를 사용하여 URL에서 동적으로 ID 값을 가져올 수 있음!
4. Express 미들웨어(Middleware)란?
미들웨어는 요청과 응답 사이에서 특정 작업을 수행하는 함수입니다.
로그 기록, 인증, 요청 데이터 검증 등에 사용됩니다.
✅ 미들웨어의 주요 기능
✔ 요청(Request)과 응답(Response)을 가로채어 처리 가능
✔ app.use()를 사용하여 여러 개의 미들웨어 연결 가능
✅ 로그를 출력하는 미들웨어 예제
app.use((req, res, next) => {
console.log(`${req.method} ${req.url} 요청`);
next(); // 다음 미들웨어 실행
});
📌 모든 요청을 가로채서 요청 정보(메서드, URL)를 출력하는 미들웨어
✅ 특정 경로에만 적용하는 미들웨어
const checkAuth = (req, res, next) => {
if (!req.headers.authorization) {
return res.status(403).send("접근 권한 없음!");
}
next();
};
app.get("/secure", checkAuth, (req, res) => {
res.send("인증된 사용자만 접근 가능");
});
📌 checkAuth 미들웨어를 /secure 경로에 적용하여 인증된 사용자만 접근 가능하게 설정
5. Express에서 정적 파일 제공하기
Express에서는 express.static()을 사용하여 CSS, 이미지, JavaScript 파일을 정적 파일로 제공할 수 있음
✅ 정적 파일 제공 예제
app.use(express.static("public"));
📌 public 폴더 안에 있는 파일들을 정적 리소스로 제공
✅ 정적 파일을 브라우저에서 접근하는 방법
http://localhost:3000/style.css
http://localhost:3000/script.js
📌 정적 파일을 쉽게 제공하여 웹 페이지를 구성할 수 있음!
✅ 여기까지 Express.js의 라우팅과 미들웨어 활용법을 배웠습니다!
👉 "그렇다면, Express.js를 사용하여 RESTful API를 어떻게 만들까?"
✅ 다음 회차에서 RESTful API 개발 방법을 배워봅시다!
'IT Developer > Node.js' 카테고리의 다른 글
Node.js 기초 <10. 웹소켓(WebSocket)과 실시간 데이터 처리> (1) | 2025.03.12 |
---|---|
Node.js 기초 <9. 파일 시스템(fs 모듈)과 스트림(Stream) 활용> (0) | 2025.03.11 |
Node.js 기초 <8. Node.js와 데이터베이스 (MySQL, PostgreSQL, MongoDB)> (0) | 2025.03.10 |
Node.js 기초 <7. RESTful API 개발: CRUD 구현 및 HTTP 요청 처리> (0) | 2025.03.09 |
Node.js 기초 <5. npm과 패키지 관리: 의존성 관리 및 버전 관리> (0) | 2025.03.07 |
Node.js 기초 <4. Node.js의 내장 모듈과 CommonJS/ESM> (1) | 2025.03.06 |
Node.js 기초 <3. Node.js의 이벤트 루프와 비동기 처리> (1) | 2025.03.05 |
Node.js 기초 <2. Node.js 설치 및 환경 설정> (1) | 2025.03.04 |