#Open Data Service — ASP.NET Core 6 後端 API
ASP.NET Core 6 公開資料整合服務:把政府 OpenData 的公車動態 / 路線 / 到站時刻等分散端點,統一成一套受 JWT 保護的 REST API,並以 Hangfire 排程定時抓取與快取。
// 為什麼會做
##背景
政府 OpenData 端點分散、格式不一,上游還常有 token 換發與憑證驗證問題;下游需要一致格式、穩定可查詢的單一入口。
// 遇到什麼問題
##問題
各上游 OpenData 的認證、格式與可用性都不同,直接串接會讓下游耦合又難維護;即時資料也需要定時抓取與快取,不能每次打上游。
// 如何解決
##解法
五專案分層方案(Web API / Service / Repository / Common / Tests)搭配介面化 DI(各層以 ServiceCollection extension 註冊):Controller → Service(Mapster 做 DTO 對映)→ Repository(SQL Server)。上游整合封裝在具 token 換發(TokenService / JWT)與自訂 HttpClient(處理政府站點憑證)的 outbound service;Hangfire(SqlServer storage + Dashboard)排程定時抓取公車路線寫入 DB;Swagger 附 JWT 安全定義與 XML 文件;整包以 Dockerfile 容器化。
// 我負責什麼
##我的角色
獨立設計與開發:分層架構、介面化 DI 註冊、Service / Repository 實作、Hangfire 排程、JWT 認證、Mapster 對映,並以 xUnit + NSubstitute + AutoFixture + FluentAssertions 撰寫 Service 層單元測試。
// result
##成果
分層清楚、可測試的 .NET 6 後端:Controller / Service / Repository 三層以介面解耦,Hangfire 定時抓取上游、JWT 保護 endpoint,核心 Service 附 AAA 單元測試。作為 C# / .NET 後端架構與測試實務的公開程式碼佐證。