今天是本次挑戰的最後一篇文章了,其實我認為自己還有很多內容來不及在這30天學完,從環境安裝到建立 API、再到測試與錯誤處理,這些都是我目前在職場上會經歷到的。今天的內容還是會把最後一部分的內容給學習完畢,最後才是本次挑戰的心得,那就直接開始吧!
建立完 API 後,測試也是非常的重要,但我們不可能每次都手動呼叫程式碼,所以我們需要更方便的測試工具,今天要介紹的兩個工具就是標題所提到的 Swagger 與 Postman。
ASP.NET Core 內建就能整合 Swagger,只要安裝 Swashbuckle.AspNetCore 套件,就能自動生成互動式 API 文件。安裝方式:
dotnet add package Swashbuckle.AspNetCore
在 Program.cs 中加入以下設定:
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
var app = builder.Build();
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
}
執行後開啟瀏覽器輸入:
https://localhost:5001/swagger
就能看到 API 自動文件與互動測試介面,每個 API 都可以直接在瀏覽器上送出請求,非常方便!
📘 參考文件:Getting started with Swashbuckle
如果 Swagger 是「內建測試工具」,那 Postman 就是「專業 API 測試 IDE」。其實 Postman 是我在上班時候用最多的工具,因為公司系統的API適用C#所寫的,所以在測試、或是當中有功能失敗、變更等等的狀況都會用Postman去打API,將輸入打包成json,透過Postman呼叫API來讓卡住的流程走下去。而可以用 Postman 做到以下的事情:
💡 Postman 官方教學:Postman Learning Center
在實際專案中,錯誤是一定會發生的,而我們能做的,就是「妥善處理」與「記錄下來」。
Middleware 是 ASP.NET Core 中處理請求的「中介層」,每個 HTTP 請求都會經過這條「管線 (Pipeline)」,你可以在中間攔截、修改或回應。例如建立一個全域錯誤處理 Middleware:
public class ErrorHandlingMiddleware
{
private readonly RequestDelegate _next;
private readonly ILogger<ErrorHandlingMiddleware> _logger;
public ErrorHandlingMiddleware(RequestDelegate next, ILogger<ErrorHandlingMiddleware> logger)
{
_next = next;
_logger = logger;
}
public async Task Invoke(HttpContext context)
{
try
{
await _next(context);
}
catch (Exception ex)
{
_logger.LogError(ex, "發生未處理的例外狀況");
context.Response.StatusCode = 500;
await context.Response.WriteAsync("伺服器內部錯誤");
}
}
}
註冊在 Program.cs:
app.UseMiddleware<ErrorHandlingMiddleware>();
📘 官方教學:ASP.NET Core Middleware Fundamentals
在開發 ASP.NET Core 應用程式時,「記錄 (Logging)」是不可或缺的一環,它能幫助我們了解系統運作狀況、追蹤問題來源、分析效能瓶頸。ASP.NET Core 內建一套彈性的記錄系統,透過 ILogger 介面與多種 Provider 來實作。每當應用啟動時,系統會根據 appsettings.json 或程式碼設定建立對應的記錄提供者(如 Console、Debug、EventLog 等)。
private readonly ILogger<HomeController> _logger;
public HomeController(ILogger<HomeController> logger)
{
_logger = logger;
}
public IActionResult Index()
{
_logger.LogInformation("進入首頁");
return View();
}
而以下為常見的 Log Level:
苦餐可更完整的官方教學:Logging in ASP.NET Core
這是我第一次參加鐵人賽,很可惜到26天的時候中斷了,因為當天以為會在12點以前到家結果沒有,就來不及發不了🤯,但沒關係我還是完成了30天的挑戰。從一開始的「Python 使用者初學 C#」,到今天能建立出完整的 Web API、測試、處理錯誤與記錄日誌,這趟鐵人賽之旅可說是我學習生涯的一個重要里程碑。這 30 天,我學到了:基礎扎實的重要性,從變數、流程控制、類別到泛型,這些基礎都是後面學習 ASP.NET Core 的根基。理解架構比背語法更重要,當我學會 MVC、Routing、Middleware、DI(依賴注入)後,寫程式的邏輯變得更清晰。實作是最好的老師,從 CRUD API 到非同步程式、到最後上手 Swagger/Postman 測試,真正「動手寫」的過程讓理解更深。日誌與例外處理是職場必備技能,這是從學生到開發者的分水嶺,學會如何「穩定地維護系統」,而不只是讓程式「能跑」。而這次鐵人賽讓我深刻體會到「學習不是一場短跑,而是一場長跑」。能每天堅持寫作、學習、整理,並看到自己從一個不懂 C# 的 Pythoner,成長為能開發 Web API 的開發者,這份成就感真的無可取代,感謝所有在這 30 天給我鼓勵、留言、按讚的朋友們,希望我的學習紀錄能幫助更多剛踏入 C# 世界的新手。
我知道這只是一個開始,並不是終點,還有更多更難、更有挑戰性的內容值得我去學習,也深知到目前所學的內容與職場實際應用的開發還有著一大段的距離,我會繼續從這個基礎網上努力學習的!也謝謝IT鐵人賽給出這個比賽讓我能夠挑戰自己!