IRONSOFTWAREHOME

構建 Postman 克隆:API 調用的類庫設計

Class Library Design: Building a Postman Clone Course

Tim Corey

47m 58s

API 是現代應用程式開發的核心,擁有正確的工具來測試和互動是至關重要的。 Tim Corey 的影片 "Class Library Design: Building a Postman Clone" 逐步帶領我們建立基於桌面的 Postman 克隆。

在這篇文章中,我們將探索如何透過深入研究 Tim Corey 在其影片中展示的詳細方法來建立一個 Postman 克隆。 Tim 帶著我們一步步地建立一個類程式庫,以促成應用程式中的 API 呼叫。 到最後,我們將擁有一個運行中的 MVP(最小可行產品)版本的 Postman 克隆。

這個過程對初學者友好,但也展示了對於希望建立自己 Postman 或類似應用的開發者來說有價值的關鍵程式設計原則。 讓我們深入了解這個過程。

引言和設置

Tim 開始解釋本課的目標:建立業務邏輯和資料存取層以使 API 呼叫能在應用程式中運行。 他強調這是一個 MVP——一個功能性版本,可以在以後擴展。

在深入程式碼之前,Tim 提到課程設計是讓作品集友好的,但他警告不要直接複製專案。 相反,他鼓勵開發者將其用作靈感,建立獨特的專案,以展示 C#、API 互動和使用者介面設計的技能。

建立 API 存取類

Tim 帶著我們打開類程式庫並從一張白紙開始。 他刪除預設的 Class1 並建立一個名為 APIAccess 的新類。 這將處理所有 API 互動。

他解釋他的方法設計方式:從 public void 方法開始,新增如字串 url 等參數,然後逐步將它們細化成可以處理真實世界 API 請求的異步任務。

public class APIAccess
{
    private readonly HttpClient client = new();
    
    public async Task<string> CallApiAsync(string url)
    {
        var response = await client.GetAsync(url);
        if (response.IsSuccessStatusCode)
        {
            return await response.Content.ReadAsStringAsync();
        }
        return $"error: {response.StatusCode}";
    }
}
Text

Tim 強調建立一個單一的 HTTP 客戸端實例,以避免每次呼叫時重新初始化,這會改善性能。

處理 API 響應

一旦 HTTP 客戶端就位,Tim 展示如何從 API 呼叫中檢索響應。 他指出除了事件處理程式,返回 Task<string> 而不是 async void 的重要性。

為了演示,Tim 使用 JSON Placeholder 提供的樣本 API,該 API 提供了如貼文、評論和待辦事項等假資料。 他將 API URL 貼到 UI 表單 HTML 中,並用 results.Text 欄位顯示響應 HTML 或 JSON。

results.Text = await api.CallApiAsync(apiText.Text);
Text

Tim 注意到原始 JSON 輸出是計算機可讀的但對使用者不友好,這引出了下一步:格式化 JSON。

格式化 JSON 輸出

Tim 展示如何使用 JsonSerializer 使響應的 JSON 更易讀:

var jsonElement = JsonSerializer.Deserialize<JsonElement>(responseJson);
var prettyJson = JsonSerializer.Serialize(jsonElement, new JsonSerializerOptions { WriteIndented = true });
Text

這讓開發者能在 UI 中顯示 美觀的 JSON,這在 JSON 文字編輯器中或測試端點時更易讀。 Tim 還新增了一個選擇,可在 原始格式化輸出 之間切換,提供靈活性,無論資料是要在 UI 中 顯示 還是程式處理。

未來增強功能的規劃

儘管 MVP 僅支持 GET 請求,但 Tim 演示如何為其他 HTTP 動作如 POST、PATCH、PUT 和 DELETE 進行規劃。 他建立了一個叫做 HTTPAction 的 enum,預設值是 GET,為程式碼進行擴展而不重寫現有方法做好準備。

public enum HTTPAction
{
    GET
}
Text

這種前瞻性的設計是一個很棒的實踐,適合希望構建可維護和擴展的 Postman 克隆的開發者。

URL 驗證

Tim 引入了一個 URL 驗證方法,以確保使用者只提供有效的 HTTPS 端點:

public bool IsValidURL(string url)
{
    if (string.IsNullOrWhiteSpace(url)) return false;
    return Uri.TryCreate(url, UriKind.Absolute, out Uri uriResult) && uriResult.Scheme == Uri.UriSchemeHttps;
}
Text

他解釋不要信任使用者輸入,並在需要時多次驗證輸入的重要性。 這確保應用程式不會因為無效的 URL 而崩潰,並防止錯誤資訊打斷工作流程。

將 API 存取與 UI 整合

一旦驗證就緒,Tim 展示如何將 API 存取與儀錶板UI整合:

  1. 實例化 APIAccess 類。

  2. 驗證 URL。

  3. 在結果文字編輯器中顯示響應 JSON。

  4. 對於無效的或失敗的請求顯示有意義的錯誤資訊。

if (!api.IsValidURL(apiText.Text))
{
    systemStatus.Text = "無效的 URL";
    results.Text = string.Empty;
    return;
}
results.Text = await api.CallApiAsync(apiText.Text);
Text

Tim 強調乾淨的 UI 設計的重要性,在每個請求開始時結果區域為空,並根據成功或失敗更新系統狀態。

使用接口進行依賴注入和單元測試

Tim 介紹 IAPIAccess,APIAccess 的接口。 這是單元測試和為依賴注入準備程式碼的最佳實踐:

public interface IAPIAccess
{
    Task<string> CallApiAsync(string url);
    bool IsValidURL(string url);
}
Text

通過對接口而不是具體類進行編碼,開發者可以替換實現以進行測試或升級 API 邏輯,而不更改 UI 或其他依賴程式碼。 Tim 強調雖然這對 MVP 來說有點過度,但對於未來應用程式的增強是有價值的。

測試和運行應用程式

所有部件就位後,Tim 在 Windows 上運行應用程式,貼上 JSON Placeholder URL,成功顯示格式化的 JSON 響應。 他展示了如何正確拒绝無效的 URL,確保應用在使用者輸入錯誤時仍然穩健成。

這構成了一個可運行的 Postman 克隆,能進行 GET 請求、驗證輸入,並以使用者友好格式顯示響應。

接下來的步驟:作品集和 GitHub 整合

Tim 結束課程時強調將該專案變為作品集準備好的項目的重要性。 他建議:

  • 為專案建立一個 GitHub 儲庫。

  • 新增一個説明應用程式的清晰 README。

  • 包含可下載的可執行文件,方便他人測試。

  • 在截圖或 GIF 中強調顯示UI和功能。

  • 記錄過程、設置和程式碼結構。

他警告不要簡單地複製他的程式碼並將其上傳作為您的作品。 相反,開發者應使用這些課程建立自己的 Postman 克隆或反映個人風格和技能組的類似應用。

通過採用這種方法,開發者不僅展示編碼能力,也顯示探索、更新和維護軟體專案的能力,這對潛在雇主是無價的。

結論

Tim Corey 的 影片提供了一份從零開始建立 Postman 克隆的全面指南。 從設置 class library 到處理 API 調用、格式化 JSON 響應、驗證輸入,並用接口和依賴注入為未來增強功能做好準備,這堂課涵蓋了完整的應用程式開發過程。

通過採用這種方法,開發者可以使用純 C# 建立 MVP Postman 克隆,整合 UI 元件以顯示響應 HTML 或 JSON,並準備 GitHub 專案以便在作品集中展示。 這種逐步的方法不僅教授程式碼,還強調規劃、過程和設計思維,這對於專業軟體開發者來說是至關重要的技能。

Earn More by Sharing What You Love

Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!

Let's Stay in Touch!

Join our newsletter, you’ll get exclusive access on article updates. We value your privacy

Key in blue circle

立即免費取得 30 天試用金鑰

Your trial license will be sent to your email address

無任何限制。100% 解鎖。無需信用卡。

bullet_checked無需信用卡或建立帳號無任何限制。100% 解鎖。無需信用卡。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
獲取您的無義務諮詢
填寫以下表格或發送電子郵件至sales@ironsoftware.com
您的詳細資訊將始終保密。
被全球數百萬工程師信任
Iron Software的客戶標誌
立即獲取您的30天試用金鑰
無需信用卡或帳戶建立