iT邦幫忙

2024 iThome 鐵人賽

DAY 11
0
自我挑戰組

30 天 Node.js 探索:基礎、進階與實踐系列 第 11

Day 11:REST API 基礎與 Express 結合

  • 分享至 

  • xImage
  •  

接下來要來了解 REST API 的基本概念,並學習如何使用 Node.js 和 Express 框架建立一個簡單的 RESTful API。

什麼是 REST API?

REST(Representational State Transfer)是一種基於 HTTP 的架構風格,專為設計網路應用程序的 API 而創建。它的特點有以下幾個:

  • 無狀態: 每次 API 請求都是獨立的,服務端不會儲存請求的狀態。
  • 資源導向: REST API 通常操作資源,每個資源對應一個 URL,使用 HTTP 方法(GET、POST、PUT、DELETE)來進行操作。

HTTP 方法與 RESTful API

  • GET: 用來獲取資源。
  • POST: 用來創建新資源。
  • PUT: 用來更新資源。
  • DELETE: 用來刪除資源。
    假設我們有一個「使用者」資源:
  • GET /users: 獲取所有使用者。
  • POST /users: 新增一個使用者。
  • PUT /users/:id: 更新某個使用者的資訊。
  • DELETE /users/:id: 刪除某個使用者。

使用 Express 構建 REST API

Express 是 Node.js 的輕量級網絡應用框架,非常適合用來構建 REST API。接下來要來介紹如何使用 Express 構建一個簡單的 REST API。
安裝 Express
在開始構建 API 之前,首先需要安裝 Express:

bash
npm install express

建立一個簡單的 REST API

js
const express = require('express');
const app = express();
const port = 3000;

// 模擬資料
let users = [
  { id: 1, name: 'Jimmy Doe' },
  { id: 2, name: 'Jane Doe' }
];

// 中介軟體,解析 JSON 請求體
app.use(express.json());

// 取得所有使用者 (GET)
app.get('/users', (req, res) => {
  res.json(users);
});

// 根據 ID 取得特定使用者 (GET)
app.get('/users/:id', (req, res) => {
  const user = users.find(u => u.id === parseInt(req.params.id));
  if (user) {
    res.json(user);
  } else {
    res.status(404).send('User not found');
  }
});

// 新增使用者 (POST)
app.post('/users', (req, res) => {
  const newUser = {
    id: users.length + 1,
    name: req.body.name
  };
  users.push(newUser);
  res.status(201).json(newUser);
});

// 更新使用者 (PUT)
app.put('/users/:id', (req, res) => {
  const user = users.find(u => u.id === parseInt(req.params.id));
  if (user) {
    user.name = req.body.name;
    res.json(user);
  } else {
    res.status(404).send('User not found');
  }
});

// 刪除使用者 (DELETE)
app.delete('/users/:id', (req, res) => {
  const userIndex = users.findIndex(u => u.id === parseInt(req.params.id));
  if (userIndex !== -1) {
    users.splice(userIndex, 1);
    res.status(204).send();
  } else {
    res.status(404).send('User not found');
  }
});

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

REST API 的路由設計

在上面的例子中,定義了針對 users 資源的各種操作,每個操作都對應不同的 HTTP 方法和路徑。這樣的設計遵循了 RESTful 原則,讓 API 結構清晰而且更容易去理解。

  • /users: 路徑用於處理所有使用者的操作(GET、POST)。
  • /users/: 路徑用於針對特定使用者的操作(GET、PUT、DELETE)。

測試 API

要測試這個 API,可以使用以下工具:

  • Postman: 圖形界面的 API 測試工具,適合進行 HTTP 請求測試。
  • cURL: 命令列工具,用於發送 HTTP 請求。
    使用 cURL 測試 GET 請求的範例:
bash
curl http://localhost:3000/users

進一步擴展

  • 驗證與授權: 可以通過中介軟體添加用戶驗證與授權邏輯。
  • 錯誤處理: 統一的錯誤處理可以讓 API 更具穩定性。
  • 使用資料庫: 目前可以用陣列模擬資料,實際應用中可以使用 MongoDB、MySQL 等資料庫來持久化資料。

總結

今天學習了 REST API 的基本概念,並使用 Express 構建了一個簡單的 RESTful API。了解了 HTTP 方法如何與資源操作結合,並透過程式碼示範了 GET、POST、PUT 和 DELETE 請求的一些範例。在接下來的實作中,這些基礎知識能夠幫助我去建立出更複雜的 API 系統,並進行資料的持久化處理。


上一篇
Day 10: Node.js 單執行緒模型與非阻塞 I/O
下一篇
Day 12: 資料庫連接:使用 MongoDB 與 Mongoose
系列文
30 天 Node.js 探索:基礎、進階與實踐30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言