노드 Node.js
7. RESTful API 개발: CRUD 구현 및 HTTP 요청 처리
안녕하세요! 태마입니다.
Node.js 기초 강좌입니다.
강좌의 경우
1. 주제 간단 정리
2. 상세 주제 정리
으로 이루어져 있습니다.
노드 Node.js
포스팅 시작하겠습니다 :)
1. 주제 간단 정리
1. RESTful API란?
RESTful API는 웹 애플리케이션에서 데이터를 주고받기 위한 규칙을 정의한 아키텍처 스타일입니다.
Node.js와 Express를 사용하면 RESTful API를 쉽게 구축할 수 있습니다.
📌 RESTful API의 특징
✔ 클라이언트-서버 구조 → 백엔드와 프론트엔드가 독립적으로 개발 가능
✔ 무상태(Stateless) → 서버는 클라이언트의 상태를 저장하지 않음
✔ 자원(Resource) 중심 → URL을 통해 데이터 자원에 접근
✔ 표준 HTTP 메서드 사용 → GET, POST, PUT, DELETE 활용
✅ RESTful API에서 사용하는 HTTP 메서드
HTTP 메서드설명예제 엔드포인트
GET | 데이터 조회 | /users (전체 조회), /users/:id (특정 사용자 조회) |
POST | 데이터 생성 | /users (새 사용자 추가) |
PUT | 데이터 수정 | /users/:id (특정 사용자 정보 수정) |
DELETE | 데이터 삭제 | /users/:id (특정 사용자 삭제) |
✅ 여기까지 RESTful API의 기본 개념을 배웠습니다!
👉 "그렇다면, Express.js를 사용하여 CRUD API를 어떻게 구현할까?"
✅ 2부에서 Express를 사용한 RESTful API 구축 방법을 배워봅시다!
2. 상세 주제 정리
1. Express로 RESTful API 기본 서버 만들기
✅ 프로젝트 설정 및 Express 설치
$ mkdir rest-api && cd rest-api
$ npm init -y
$ npm install express
✅ 기본 Express 서버 코드
const express = require("express");
const app = express();
app.use(express.json()); // JSON 요청 본문 처리
app.listen(3000, () => {
console.log("RESTful API 서버 실행 중 (포트 3000)!");
});
📌 서버 실행 후 http://localhost:3000에서 API 테스트 가능!
2. CRUD API 구현 – 사용자(User) 관리
✅ 1) GET 요청 – 모든 사용자 조회
const users = [
{ id: 1, name: "Alice" },
{ id: 2, name: "Bob" }
];
app.get("/users", (req, res) => {
res.json(users);
});
📌 GET /users 요청 시 모든 사용자 데이터를 JSON 형식으로 반환
✅ 2) GET 요청 – 특정 사용자 조회
app.get("/users/:id", (req, res) => {
const user = users.find((u) => u.id === parseInt(req.params.id));
if (!user) return res.status(404).send("사용자를 찾을 수 없음");
res.json(user);
});
📌 GET /users/:id 요청 시 특정 사용자 데이터 조회
✅ 3) POST 요청 – 새 사용자 추가
app.post("/users", (req, res) => {
const newUser = { id: users.length + 1, name: req.body.name };
users.push(newUser);
res.status(201).json(newUser);
});
📌 POST /users 요청 시 새 사용자 추가 (JSON 본문 필요)
✅ 4) PUT 요청 – 사용자 정보 수정
app.put("/users/:id", (req, res) => {
const user = users.find((u) => u.id === parseInt(req.params.id));
if (!user) return res.status(404).send("사용자를 찾을 수 없음");
user.name = req.body.name;
res.json(user);
});
📌 PUT /users/:id 요청 시 사용자 정보 수정
✅ 5) DELETE 요청 – 사용자 삭제
app.delete("/users/:id", (req, res) => {
const index = users.findIndex((u) => u.id === parseInt(req.params.id));
if (index === -1) return res.status(404).send("사용자를 찾을 수 없음");
users.splice(index, 1);
res.send("사용자가 삭제되었습니다.");
});
📌 DELETE /users/:id 요청 시 특정 사용자 삭제
3. RESTful API 테스트 – Postman 활용
✅ 1) GET 요청 (모든 사용자 조회)
📌 GET http://localhost:3000/users
📌 응답(JSON)
[
{ "id": 1, "name": "Alice" },
{ "id": 2, "name": "Bob" }
]
✅ 2) POST 요청 (새 사용자 추가)
📌 POST http://localhost:3000/users
📌 요청 본문(JSON)
{ "name": "Charlie" }
📌 응답(JSON)
{ "id": 3, "name": "Charlie" }
✅ 3) PUT 요청 (사용자 정보 수정)
📌 PUT http://localhost:3000/users/3
📌 요청 본문(JSON)
{ "name": "Charlie Updated" }
📌 응답(JSON)
{ "id": 3, "name": "Charlie Updated" }
✅ 4) DELETE 요청 (사용자 삭제)
📌 DELETE http://localhost:3000/users/3
📌 응답
사용자가 삭제되었습니다.
📌 Postman을 활용하면 API 요청을 쉽게 테스트할 수 있음!
4. Express의 RESTful API 확장 – 데이터베이스 연결
현재 API는 메모리에 데이터를 저장하는 방식으로 구현됨.
실제 서비스에서는 MongoDB, MySQL 같은 데이터베이스와 연동하여 데이터를 저장해야 함.
✅ MongoDB와 Mongoose를 사용한 API 확장 예제
$ npm install mongoose
const mongoose = require("mongoose");
mongoose.connect("mongodb://localhost:27017/mydb", {
useNewUrlParser: true,
useUnifiedTopology: true
});
const UserSchema = new mongoose.Schema({ name: String });
const User = mongoose.model("User", UserSchema);
app.post("/users", async (req, res) => {
const user = new User({ name: req.body.name });
await user.save();
res.status(201).json(user);
});
📌 MongoDB와 연결하여 데이터를 영구적으로 저장 가능!
✅ 여기까지 Express.js를 사용한 RESTful API 개발과 CRUD 구현 방법을 배웠습니다!
👉 "그렇다면, API에서 데이터를 영구적으로 저장하려면 어떻게 할까?"
✅ 다음 회차에서 Node.js와 데이터베이스 연결 방법을 배워봅시다!
'IT Developer > Node.js' 카테고리의 다른 글
Node.js 기초 <11. 인증과 보안: JWT, OAuth, 세션 관리> (0) | 2025.03.13 |
---|---|
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 기초 <6. Express.js로 서버 만들기: 기본 개념과 라우팅> (1) | 2025.03.08 |
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 |