11. MongoDB 應用範例
學習目標
了解 IIS 服務與 Web API 專案的關係以及基本操作。
在 Visual Studio 2022 上建立 Web API 專案,結合 MongoDB 資料庫,實作會員系統 Web API。
使用 Postman 和 Swagger 測試 API 功能,驗證功能正確性。
第11.1節 Web API 概念說明
API 的概念
API(應用程式介面)是一種標準化的介面,用於不同應用程式或系統之間的溝通。其主要功能是:
 
隱藏系統內部邏輯:使用者無需了解系統的內部運作。
提供簡單接口:讓開發者以更便捷的方式操作系統資源。
例如,當使用者需要查詢 MongoDB 資料時,可以通過 API 執行指定的操作,而無需深入了解底層的資料庫通信協定。
 
API 的特點
標準化:API 設計具有固定的規範,例如參數格式、請求方法等。
高度封裝:內部邏輯對外不可見,僅暴露功能入口。
平台無關性:API 可以應用於不同操作系統和開發語言。
用戶端與伺服器通訊方式
Web API 的核心在於實現用戶端(Client)與伺服器(Server)之間的通信。這種通信通常基於 TCP/IP 協定,通過 HTTP 方法進行。
 
關鍵元素
IP 位址
每個連接網路的設備都擁有唯一的 IP 位址,例如:
127.0.0.1:本地環回地址,用於測試。
192.168.x.x:內部局域網地址。
DNS(域名系統)
DNS 負責將域名(如 www.google.com)轉換為 IP 位址,以便用戶方便記憶。
Port(埠號)
埠號用於區分不同應用程序,例如:
Web 服務使用埠號 80 或 443。
MongoDB 預設埠號為 27017。
數據封包(Data Packet)
每次請求和回應會分解成多個封包,封包內包含標頭(Header)和有效數據(Payload)。
範例:使用 MongoDB API
用戶通過 Mongo Shell 執行指令:db.authors.find({})。
伺服器返回結果:
json
複製程式碼
[
    { "id": "095369001", "name": "黃小嘉" },
    { "id": "105369012", "name": "周小樵" }
]
這是一個典型的 API 請求和回應過程。
會員系統 Web API 功能設計
假設我們運行一個電子商務平台,需要實作以下功能模組:
 
新增會員
修改會員
刪除會員
查詢會員資訊
HTTP 方法與用途
方法 描述
GET 用於讀取數據或查詢資訊。
POST 用於新增資源或數據。
PUT 用於更新現有數據。
DELETE 用於刪除指定資源。
Web API 專案實作流程
1. 建立 Web API 專案
開啟 Visual Studio 2022,選擇建立新專案,選擇 ASP.NET Core Web API 範本。
輸入專案名稱(如 MemberAPI),選擇 .NET 8.0 版本。
安裝 MongoDB 驅動程式:
在工具列選擇「工具 > NuGet 套件管理員」。
輸入指令安裝套件:Install-Package MongoDB.Driver -Version 2.26.0。
2. 定義資料結構
在專案的 Models 資料夾中,定義資料結構對應 MongoDB 的集合結構。
 
類別定義範例:
csharp
複製程式碼
public class MembersDocument {
    public string uid { get; set; }    // 會員編號
    public string name { get; set; }  // 會員姓名
    public string phone { get; set; } // 會員電話
}
3. 實作 API 功能
3.1 新增會員資訊(POST)
請求格式:
json
複製程式碼
{
    "uid": "1",
    "name": "Nathan",
    "phone": "0955487135"
}
回應格式:
json
複製程式碼
{
    "ok": true,
    "errMsg": ""
}
控制器程式碼:
csharp
複製程式碼
[HttpPost]
public AddMemberResponse Post(AddMemberRequest request) {
    var response = new AddMemberResponse();
    var client = new MongoClient("mongodb://localhost:27017");
    var db = client.GetDatabase("MemberDB");
    var col = db.GetCollection<MembersDocument>("members");
 
    var existing = col.Find(m => m.uid == request.uid).FirstOrDefault();
    if (existing != null) {
        response.ok = false;
        response.errMsg = "會員已存在";
    } else {
        col.InsertOne(new MembersDocument {
            uid = request.uid,
            name = request.name,
            phone = request.phone
        });
        response.ok = true;
    }
    return response;
}
3.2 修改會員資訊(PUT)
請求格式:
json
複製程式碼
{
    "uid": "1",
    "name": "John",
    "phone": "0987654321"
}
回應格式:
json
複製程式碼
{
    "ok": true,
    "errMsg": ""
}
控制器程式碼:
csharp
複製程式碼
[HttpPut]
public EditMemberResponse Put(EditMemberRequest request) {
    var response = new EditMemberResponse();
    var client = new MongoClient("mongodb://localhost:27017");
    var db = client.GetDatabase("MemberDB");
    var col = db.GetCollection<MembersDocument>("members");
 
    var update = Builders<MembersDocument>.Update
                .Set(m => m.name, request.name)
                .Set(m => m.phone, request.phone);
 
    var result = col.UpdateOne(m => m.uid == request.uid, update);
 
    response.ok = result.ModifiedCount > 0;
    response.errMsg = result.ModifiedCount == 0 ? "更新失敗" : "";
    return response;
}
3.3 刪除會員資訊(DELETE)
請求 URL:
bash
複製程式碼
DELETE https://localhost:44333/api/member/1
回應格式:
json
複製程式碼
{
    "ok": true,
    "errMsg": ""
}
控制器程式碼:
csharp
複製程式碼
[HttpDelete("{uid}")]
public DeleteMemberResponse Delete(string uid) {
    var response = new DeleteMemberResponse();
    var client = new MongoClient("mongodb://localhost:27017");
    var db = client.GetDatabase("MemberDB");
    var col = db.GetCollection<MembersDocument>("members");
 
    var result = col.DeleteOne(m => m.uid == uid);
 
    response.ok = result.DeletedCount > 0;
    response.errMsg = result.DeletedCount == 0 ? "刪除失敗" : "";
    return response;
}
4. 測試 API 功能
測試工具
Postman:
 
模擬 HTTP 請求,測試 API 功能。
範例:
新增會員:發送 POST 請求,確認伺服器返回成功訊息。
查詢會員:發送 GET 請求,驗證返回的會員清單正確。
Swagger:
 
提供互動式文檔,方便開發者理解 API 規範並測試功能。
測試結果範例
新增會員:
json
複製程式碼
{ "ok": true, "errMsg": "" }
查詢全部會員:
json
複製程式碼
[
    { "uid": "1", "name": "Nathan", "phone": "0955487135" },
    { "uid": "2", "name": "Bob", "phone": "0985462782" }
]
結論
本章節完整講解如何使用 MongoDB 與 ASP.NET Core Web API 實作會員系統,並通過 Postman 測試功能。通過以上實踐,可以掌握 API 設計與測試的核心技能,為未來的應用開發奠定基礎。
 
 
 
 

 

11. MongoDB 應用範例


學習目標
了解 IIS 服務與 Web API 專案的關係以及基本操作。
在 Visual Studio 2022 上建立 Web API 專案,結合 MongoDB 資料庫,實作會員系統 Web API。
使用 Postman 和 Swagger 測試 API 功能。
第11.1節 Web API 概念說明
API 的概念
API(應用程式介面)是系統間的溝通橋樑,用於定義規則與使用方式。例如,使用者操作 MongoDB 資料庫時,不需要了解通訊協定的細節,只需通過 API 執行功能。

特點:
隱藏系統內部邏輯。
提供簡單接口供開發者使用。
範例:MongoDB 的 API,允許使用者通過指定方法操作資料庫。
用戶端與伺服器通訊方式
伺服器與用戶端之間通過 TCP/IP 協定進行通訊。通訊方式包括請求(Request)與回應(Response),細分為標頭(Header)和資料(Payload)。

核心元素
IP 位址:標識網路中的設備,例如 127.0.0.1 表示本地。
DNS:將人類易記的網址轉換為 IP,例如 www.google.com 對應 172.217.160.100。
Port 號:區分不同應用,例如 MongoDB 預設使用 27017。
數據封包(Data Packet):包含元數據與具體資料,用於通訊。
範例:查詢 MongoDB API
請求:用戶通過 Mongo Shell 執行 db.authors.find({})。
回應:伺服器返回匹配結果,例如:
json
複製程式碼
[
    { "id": "095369001", "name": "黃小嘉" },
    { "id": "105369012", "name": "周小樵" }
]
會員系統 Web API
假設我們運行一個電子商務平台,需實作以下功能:

新增會員
修改會員
刪除會員
查詢會員資訊
HTTP 定義的方法與用途:

GET:取得資料。
POST:新增資料。
PUT:更新資料。
DELETE:刪除資料。
Web API 專案實作步驟
建立 Web API 專案:

使用 Visual Studio 建立 ASP.NET Core Web API。
安裝 MongoDB 驅動程式。
定義資料結構與 API 指令:

Models 資料夾定義 MongoDB 中會員資料的結構,例如:
csharp
複製程式碼
public class MembersDocument {
    public string uid { get; set; }
    public string name { get; set; }
    public string phone { get; set; }
}
撰寫功能指令:

新增會員資訊(POST):
請求格式:
json
複製程式碼
{
    "uid": "1",
    "name": "Nathan",
    "phone": "0955487135"
}
回應格式:
json
複製程式碼
{
    "ok": true,
    "errMsg": ""
}
修改會員資訊(PUT):
修改資料並返回狀態。
刪除會員資訊(DELETE):
根據會員編號刪除資料。
查詢會員資訊(GET):
查詢全部或指定會員資訊。
測試 API:

使用 Postman 測試 HTTP 請求,驗證功能是否正常。
測試 API
啟動 IIS Express,確保 Web API 伺服器運行。

使用 Postman 發送請求,測試功能是否正常,例如:

新增會員:
請求類型:POST
URL: https://localhost:44333/api/member
查詢全部會員:
請求類型:GET
URL: https://localhost:44333/api/member
驗證伺服器回應:

成功新增會員時:
json
複製程式碼
{ "ok": true, "errMsg": "" }
此章節提供了使用 MongoDB 與 ASP.NET Core Web API 建立會員系統的完整步驟,涵蓋專案建立、資料結構定義、功能設計與測試方法,適合實踐應用開發的學習者。

創作者介紹
創作者 AI革命家 REVOLUTIONARY 的頭像
AI革命家

AI革命家 REVOLUTIONARY

AI革命家 發表在 痞客邦 留言(0) 人氣( 9 )