1.Express.js 프레임워크
Express.js는 Node.js를 위한 웹 애플리케이션 프레임워크로, 경량화되어 있으며 유연성이 뛰어나, 웹 서버 및 API를 쉽게 구축할 수 있도록 도와줍니다. Express.js의 주요 특징을 다음과 같습니다.
- 미들웨어: 요청과 응답 사이 동작하는 기능을 쉽게 추가 가능
- 라우팅: URL 경로에 따라 요청을 처리할 수 있는 라우팅 기능 제공
- RESTful API 지원: RESTful 아키텍쳐 스타일을 쉽게 구현할 수 있음
2.Express 설치 및 기본 사용법
# Express 설치
npm install express && yarn add express
다음 코드는 Express 애플리케이션을 간단하게 설정해보겠습니다.
// app.js 파일 생성
const express = require("express");
const app = express();
const port = 3000;
// Default Route Setting
app.get("/", (req, res) => {
res.send("Hello, World!");
});
// Server Start
app.listen(port, () => {
console.log(`Server is running at http://localhost:${port}`);
});
아래 명령어로 서버를 실행합니다.
node app.js
브라우저에서 http://localhost:3000에 접속하면 "Hello, World!" 메시지를 볼 수 있습니다.
3. 라우터
라우터는 요청 URL에 따라 서로 다른 요청 핸들러를 정의하는 방법입니다.
const express = require("express");
const app = express();
const port = 3000;
// JSON 요청 본문 파싱
app.use(express.json());
// 라우터 생성
const router = express.Router();
app.get("/", (req, res) => {
res.send("Welcome to the API!");
});
// 라우터 핸들러 설정
router.get("/users", (req, res) => {
res.json([{ id: 1, name: "John Doe" }]);
});
router.get("/products", (req, res) => {
res.json([{ id: 2, name: "Product A" }]);
});
// 라우터를 애플리케이션에 추가
app.use("/api", router);
// 서버 시작
app.listen(port, () => {
console.log(`Server is running at http://localhost:${port}`);
});
위 예제에 /api/users와 /api/products 경로에 대한 요청을 처리합니다.
4. 미들웨어
미들웨어는 요청과 응답 사이에 실행되는 함수로, 요청을 수정하거나 응답을 가로채는 데 사용됩니다.
// 요청 로깅 미들웨어
// app.js 파일 생성
const express = require("express");
const app = express();
const port = 3000;
app.use((res, req, next) => {
console.log(`${req.method} ${req.url}`);
next(); // 다음 미들웨어 또는 핸들러 진행
});
// 기본 라우트
app.get("/", (req, res) => {
res.send("Hello, World!");
});
// 서버 시작
app.listen(port, () => {
console.log(`Server is running is at ${port}`);
});
5.RESTful API 구축
RESTful API를 구축하는 방법은 다음과 같습니다. 예제로 사용자 정보를 관리하는 API를 만들어 보겠습니다.
const express = require("express");
const app = express();
const port = 3000;
app.use(express.json()); // JSON 요청 본문 파싱
let users = []; // 사용자 데이터를 저장할 배열
// 사용자 목록 조회
app.get("/api/users", (req, res) => {
res.json(users);
});
// 사용자 추가
app.post("/api/users", (req, res) => {
const user = req.body;
users.push(user);
res.status(201).json(user); // 생성된 사용자 반환
});
// 사용자 조회
app.get("/api/users/:id", (req, res) => {
const user = users.find((u) => u.id === parseInt(req.params.id));
if (!user) return res.status(404).send("User not found");
res.json(user);
});
// 사용자 수정
app.put("/api/users/:id", (req, res) => {
const userIndex = users.findIndex((u) => u.id === parseInt(req.params.id));
if (userIndex === -1) return res.status(404).send("User not found");
users[userIndex] = req.body;
res.json(users[userIndex]);
});
// 사용자 삭제
app.delete("/api/users/:id", (req, res) => {
const userIndex = users.findIndex((u) => u.id === parseInt(req.params.id));
if (userIndex === -1) return res.status(404).send("User not found");
users.splice(userIndex, 1);
res.status(204).send(); // 삭제 후 No Content 응답
});
// 서버 시작
app.listen(port, () => {
console.log(`Server is running at http://localhost:${port}`);
});
6.API 테스트
- 사용자 추가: POST http://localhost:3000/api/user (JSON 본문: { "id": 1, "name" : "John Doe" })
- 사용자 목록 조회: GET http://localhost:3000/api/users
- 특정 사용자 조회: GET http://localhost:3000/api/users/1
- 사용자 수정: PUT http://localhost:3000/api/users/1 (JSON 본문: { "name" : "John Doe" })
- 사용자 삭제: DELETE http://localhost:3000/api/users/1
GitHub - nodeJsroom/node-js-bloging
Contribute to nodeJsroom/node-js-bloging development by creating an account on GitHub.
github.com
LIST
'Back-End > Node.js' 카테고리의 다른 글
[NodeJS] 6장 인증 및 보안 (0) | 2025.02.26 |
---|---|
[NodeJS] 5장 데이터베이스 연동하기 (0) | 2025.02.25 |
[NodeJS] 3장 라우팅 구현, HTTP 서버만들기 (0) | 2025.02.22 |
[NodeJS] 2장 Node.js의 비동기 제어 (0) | 2025.02.15 |
[NodeJS] 1장 Node.js의 탄생 (0) | 2025.02.10 |