首先,確保你已經安裝了 Node.js。然后,我們使用 Express 來簡化 API 的創建流程:

  1. 初始化 Node.js 項目:

    npm init -y
  2. 安裝 ExpressMongoose(用于與 MongoDB 交互):

    npm install express mongoose

安裝開發工具


接下來,我們安裝開發時常用的工具:

  1. dotenv:處理環境變量。
  2. nodemon:自動重啟服務器。
npm install --save-dev dotenv nodemon

創建服務器

配置 Express 服務器

server.js 文件中配置服務器:

const express = require('express');
const app = express();
const mongoose = require('mongoose');
const dotenv = require('dotenv');

// 加載環境變量
dotenv.config();

// 連接 MongoDB
mongoose.connect(process.env.DATABASE_URL, { useNewUrlParser: true, useUnifiedTopology: true })
  .then(() => console.log('連接到數據庫成功'))
  .catch((err) => console.error('連接數據庫失敗:', err));

app.listen(3000, () => {
  console.log('服務器啟動,監聽端口 3000');
});

配置數據庫連接

使用 Mongoose 連接到 MongoDB 數據庫。我們將數據庫連接字符串存儲在 .env 文件中,以避免泄露敏感信息:

DATABASE_URL=mongodb://localhost:27017/subscribers

創建數據庫模型

定義訂閱者模型

接下來,使用 Mongoose 創建一個訂閱者模型:

const mongoose = require('mongoose');

const subscriberSchema = new mongoose.Schema({
  name: {
    type: String,
    required: true
  },
  subscribedToChannel: {
    type: String,
    required: true
  },
  subscribeDate: {
    type: Date,
    required: true,
    default: Date.now
  }
});

module.exports = mongoose.model('Subscriber', subscriberSchema);

創建路由

配置 RESTful 路由

我們為訂閱者創建以下 API 路由:

const express = require('express');
const Subscriber = require('./models/subscriber');
const router = express.Router();

// 獲取所有訂閱者
router.get('/subscribers', async (req, res) => {
  try {
    const subscribers = await Subscriber.find();
    res.json(subscribers);
  } catch (err) {
    res.status(500).json({ message: '服務器錯誤' });
  }
});

// 獲取指定 ID 的訂閱者
router.get('/subscribers/:id', async (req, res) => {
  try {
    const subscriber = await Subscriber.findById(req.params.id);
    if (!subscriber) {
      return res.status(404).json({ message: '未找到訂閱者' });
    }
    res.json(subscriber);
  } catch (err) {
    res.status(500).json({ message: '服務器錯誤' });
  }
});

// 添加新訂閱者
router.post('/subscribers', async (req, res) => {
  const subscriber = new Subscriber({
    name: req.body.name,
    subscribedToChannel: req.body.subscribedToChannel
  });

  try {
    const newSubscriber = await subscriber.save();
    res.status(201).json(newSubscriber);
  } catch (err) {
    res.status(400).json({ message: '請求無效,缺少必填字段' });
  }
});

// 更新訂閱者
router.patch('/subscribers/:id', async (req, res) => {
  try {
    const subscriber = await Subscriber.findById(req.params.id);
    if (!subscriber) {
      return res.status(404).json({ message: '未找到訂閱者' });
    }
    if (req.body.name) subscriber.name = req.body.name;
    if (req.body.subscribedToChannel) subscriber.subscribedToChannel = req.body.subscribedToChannel;

    const updatedSubscriber = await subscriber.save();
    res.json(updatedSubscriber);
  } catch (err) {
    res.status(400).json({ message: '請求無效' });
  }
});

// 刪除訂閱者
router.delete('/subscribers/:id', async (req, res) => {
  try {
    const subscriber = await Subscriber.findById(req.params.id);
    if (!subscriber) {
      return res.status(404).json({ message: '未找到訂閱者' });
    }
    await subscriber.remove();
    res.json({ message: '已刪除訂閱者' });
  } catch (err) {
    res.status(500).json({ message: '服務器錯誤' });
  }
});

module.exports = router;

設置中間件

通過中間件函數 getSubscriber 來獲取訂閱者信息,避免在每個路由中重復代碼。

const getSubscriber = async (req, res, next) => {
  try {
    const subscriber = await Subscriber.findById(req.params.id);
    if (!subscriber) {
      return res.status(404).json({ message: '未找到訂閱者' });
    }
    res.subscriber = subscriber;
    next();
  } catch (err) {
    res.status(500).json({ message: '服務器錯誤' });
  }
};

測試和調試

使用 PostmanVisual Studio Code 的 REST Client 插件測試 API 路由,確保 CRUD 操作(創建、讀取、更新、刪除)都能正常工作。

示例請求

  1. 獲取所有訂閱者

    GET http://localhost:3000/subscribers
  2. 添加訂閱者

    POST http://localhost:3000/subscribers
    Content-Type: application/json
    
    {
     "name": "John Doe",
     "subscribedToChannel": "Web Dev Simplified"
    }

總結

通過本教程,我們學習了如何使用 Node.js、ExpressMongoDB 創建一個 RESTful API。從環境設置到數據庫操作,再到路由配置和中間件,您已經掌握了構建 API 的基礎知識。接下來,您可以根據需求擴展該 API,加入更多功能,優化性能,或進行安全加固。

原文引自YouTube視頻:https://www.youtube.com/watch?v=fgTGADljAeg

上一篇:

ASP.NET Core Identity 與 JWT:從安裝到配置全流程實戰

下一篇:

介紹 Postman - 適用于 API 測試的強大工具
#你可能也喜歡這些API文章!

我們有何不同?

API服務商零注冊

多API并行試用

數據驅動選型,提升決策效率

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

對比大模型API的內容創意新穎性、情感共鳴力、商業轉化潛力

25個渠道
一鍵對比試用API 限時免費

#AI深度推理大模型API

對比大模型API的邏輯推理準確性、分析深度、可視化建議合理性

10個渠道
一鍵對比試用API 限時免費