iT邦幫忙

2025 iThome 鐵人賽

DAY 13
0
自我挑戰組

《轉職學習日記:JavaScript × Node.js × TypeScript × Docker × AWS ECS》系列 第 13

Day13 - 持續成長學習藍圖 - Node.js(REST API CRUD 設計 I)

  • 分享至 

  • xImage
  •  

今天要往「後端 API」更進一步:學習 REST API 的基本設計,並用 Express 實作最常見的 CRUD(新增、讀取、更新、刪除)。
因為內容蠻多,我把它分成上下兩天。今天先做 讀取 (GET)新增 (POST)


REST API 是什麼?

REST(Representational State Transfer)是一種設計 API 的風格。
它的核心精神是:

  • 資源 (Resource):像是「文章」「使用者」「待辦事項」
  • HTTP 方法:用 GET / POST / PUT / DELETE 來操作資源
  • 路由 (URL):像 /todos 就代表「待辦事項資源」

常見的設計方式:

動作 HTTP 方法 路由 說明
讀取所有 GET /todos 取得所有待辦事項
新增一個 POST /todos 新增一筆待辦事項
更新一個 PUT /todos/:id 修改指定的待辦事項
刪除一個 DELETE /todos/:id 刪除指定的待辦事項

準備 Express 專案

我先建立一個新專案資料夾:

mkdir todo-api
cd todo-api
npm init -y
npm install express

建立第一個 REST API – Todo 清單

我用一個陣列來暫存待辦事項,先不用資料庫。

app.js

import express from "express";

const app = express();
const port = 3000;

// 讓 Express 讀取 JSON body
app.use(express.json());

// 假資料
let todos = [
  { id: 1, task: "學 Node.js", done: false },
  { id: 2, task: "寫鐵人賽文章", done: true }
];

// 1. GET /todos – 取得所有待辦事項
app.get("/todos", (req, res) => {
  res.json(todos);
});

// 2. POST /todos – 新增一個待辦事項
app.post("/todos", (req, res) => {
  const { task } = req.body;
  if (!task) {
    return res.status(400).json({ error: "task 欄位必填" });
  }

  const newTodo = {
    id: todos.length + 1,
    task,
    done: false
  };
  todos.push(newTodo);

  res.status(201).json(newTodo);
});

// 啟動伺服器
app.listen(port, () => {
  console.log(`伺服器已啟動:http://localhost:${port}`);
});

測試 API

我用 Postmancurl 來測試:

取得所有待辦事項

curl http://localhost:3000/todos

輸出:

[
  { "id": 1, "task": "學 Node.js", "done": false },
  { "id": 2, "task": "寫鐵人賽文章", "done": true }
]

新增一個待辦事項

curl -X POST http://localhost:3000/todos \
  -H "Content-Type: application/json" \
  -d '{"task": "整理筆記"}'

輸出:

{ "id": 3, "task": "整理筆記", "done": false }

🎯 學習心得 / 今日收穫

今天算是第一次實作 真正的 API
雖然只是用陣列暫存資料,但已經能透過 GETPOST 來操作。
寫完之後我有一種「自己真的在做後端」的感覺。

最大的收穫:

  • REST API 的設計其實不難,只要記住「資源 + HTTP 方法」
  • Express 幫忙處理 JSON body 超方便 (app.use(express.json()))
  • 用 Postman 測試 API 的時候,看見新增的資料跑出來,成就感爆棚!

上一篇
Day12 - 持續成長學習藍圖 - Node.js(Express入門 – 路由與 Middleware)
下一篇
Day14 - 持續成長學習藍圖 - Node.js(REST API CRUD 設計 II)
系列文
《轉職學習日記:JavaScript × Node.js × TypeScript × Docker × AWS ECS》16
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言