πŸ€– Node.js둜 λ‚˜λ§Œμ˜ REST API λ§Œλ“€κΈ°

Hyeonio_oΒ·2025λ…„ 9μ›” 29일

BackEnd

λͺ©λ‘ 보기
7/9
post-thumbnail

β€œλ°±μ—”λ“œ 개발, μ–΄λ””μ„œλΆ€ν„° μ‹œμž‘ν•΄μ•Ό ν•˜μ§€?”
처음 μ ‘ν•˜λŠ” λΆ„λ“€μ—κ²Œ Node.jsλŠ” ν›Œλ₯­ν•œ μ„ νƒμž…λ‹ˆλ‹€. μžλ°”μŠ€ν¬λ¦½νŠΈ ν•˜λ‚˜λ‘œ ν”„λ‘ νŠΈμ—”λ“œμ™€ λ°±μ—”λ“œλ₯Ό λͺ¨λ‘ λ‹€λ£° 수 있고, 가볍고 λΉ λ₯Έ μ„œλ²„λ₯Ό μ‰½κ²Œ λ§Œλ“€ 수 있기 λ•Œλ¬Έμž…λ‹ˆλ‹€.

이번 νŠœν† λ¦¬μ–Όμ—μ„œλŠ” ν•  일(To-do) 관리 APIλ₯Ό 직접 λ§Œλ“€μ–΄λ³΄λ©° REST API의 기초λ₯Ό μ΅ν˜€λ΄…μ‹œλ‹€.


1단계 πŸ‘‰πŸ» ν”„λ‘œμ νŠΈ μ΄ˆκΈ°ν™”

λ¨Όμ € ν”„λ‘œμ νŠΈ 폴더λ₯Ό λ§Œλ“€κ³  Node.js ν™˜κ²½μ„ μ„€μ •ν•©λ‹ˆλ‹€.

mkdir node-api-tutorial
cd node-api-tutorial
npm init -y
npm install express
  • npm init -y: κΈ°λ³Έ package.json 생성
  • npm install express: μ„œλ²„ ꡬ좕을 μœ„ν•œ Express.js μ„€μΉ˜

2단계 πŸ‘‰πŸ» μ„œλ²„ μ‹€ν–‰ν•˜κΈ°

index.js νŒŒμΌμ„ λ§Œλ“€κ³  κ°„λ‹¨ν•œ μ„œλ²„λ₯Ό λ„μ›Œλ΄…λ‹ˆλ‹€.

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

app.use(express.json());

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

app.listen(PORT, () => {
  console.log(`πŸš€ Server running at http://localhost:${PORT}`);
});
  • 이제 ν„°λ―Έλ„μ—μ„œ node index.js μ‹€ν–‰ ν›„ λΈŒλΌμš°μ €μ—μ„œ http://localhost:3000 에 μ ‘μ†ν•˜λ©΄ λ©”μ‹œμ§€λ₯Ό 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

3단계 πŸ‘‰πŸ» To-do API λ§Œλ“€κΈ°

이제 본격적으둜 API μ—”λ“œν¬μΈνŠΈλ₯Ό μž‘μ„±ν•΄λ΄…μ‹œλ‹€.

let todos = [];

// λͺ©λ‘ 쑰회
app.get("/todos", (req, res) => {
  res.json(todos);
});

// μΆ”κ°€
app.post("/todos", (req, res) => {
  const { task } = req.body;
  const newTodo = { id: Date.now(), task, done: false };
  todos.push(newTodo);
  res.status(201).json(newTodo);
});

// μ™„λ£Œ 처리
app.patch("/todos/:id", (req, res) => {
  const { id } = req.params;
  const todo = todos.find((t) => t.id == id);
  if (!todo) return res.status(404).json({ message: "Not found" });

  todo.done = true;
  res.json(todo);
});

// μ‚­μ œ
app.delete("/todos/:id", (req, res) => {
  const { id } = req.params;
  todos = todos.filter((t) => t.id != id);
  res.json({ message: "Deleted" });
});

4단계 πŸ‘‰πŸ» ν…ŒμŠ€νŠΈν•˜κΈ°

Postmanμ΄λ‚˜ cURL을 μ‚¬μš©ν•΄ μš”μ²­μ„ 보낼 수 μžˆμŠ΅λ‹ˆλ‹€.

  • GET /todos β†’ 전체 λͺ©λ‘ 쑰회
  • POST /todos β†’ { "task": "λΈ”λ‘œκ·Έ μž‘μ„±" } μΆ”κ°€
  • PATCH /todos/:id β†’ νŠΉμ • ν•­λͺ© μ™„λ£Œ
  • DELETE /todos/:id β†’ νŠΉμ • ν•­λͺ© μ‚­μ œ

πŸ’‘ 마무리

μ΄λ ‡κ²Œ κ°„λ‹¨ν•œ To-do API μ„œλ²„λ₯Ό μ™„μ„±ν–ˆμŠ΅λ‹ˆλ‹€.
μ‹€μ œ μ„œλΉ„μŠ€μ—μ„  λ°μ΄ν„°λ² μ΄μŠ€ μ—°κ²°, μ—λŸ¬ 처리, 인증/인가(JWT) 등을 μΆ”κ°€ν•˜λ©΄ 훨씬 완성도 μžˆλŠ” μ„œλ²„κ°€ λ©λ‹ˆλ‹€.

0개의 λŒ“κΈ€