iT邦幫忙

2025 iThome 鐵人賽

DAY 12
0

第十二日:CRUD 升級,全方位 API 工地驗收

一、主要進展

  1. 基礎問題修正

    • models.go 補上 json tag,API 回應改為 snake_case,符合設計文件要求。
    • notification_service.goCreate 包 transaction,避免出現「孤兒通知」紀錄。
    • 預設服務 port 改為 7070,並同步更新 README、腳本、文件。
  2. 常用指令文件

    • 建立 command.md,整理 DB 初始化、server 啟動、健康檢查、smoke test、測試指令。
  3. API Gap Analysis

    • 對照文件,檢查 API 缺漏:
      • Companies:缺 pagination、PATCH /status/billing(後續補齊)。
      • Users:缺 role/status 篩選、缺 password/api-key patch。
      • Projects:僅 CRUD,缺限額、依公司查詢。
      • Bots/Destinations/Notifications:皆補上篩選、DTO 輸出,但仍缺 retry、validate 等。
      • Bot Webhook / Provision:尚未實作。
  4. API 擴充與測試

    • Company API:新增 List + SetStatus + SetBilling,支援 limit/offset/status/search;curl 驗證正確。
    • Users API:支援 company/role/status/search 篩選;curl 與 DB 驗證。
    • Projects API:新增 ListOptions,支援 company_id/status/priority;補 sqlmock 測試。
    • Destinations API:新增 project/bot/status/validation/tenant/search 篩選;補 sqlmock 測試。
    • Notifications API:支援 project/sender/status/date range/search 篩選,回應改為蛇形 DTO;補 sqlmock 測試。
  5. 文件與工具

    • README、API_README.mdDB_SETUP.mdcommand.mdscripts/curl_smoke.sh 全部更新。
    • Swagger UI 成功跑起來:http://localhost:8081 即可驗證。

二、Day11 → Day12 API 對照表

功能範疇 Day11 狀態 Day12 改進
Companies 只能 CRUD 支援 List (limit/offset/status/search),新增 PATCH /status /billing
Users 只能 CRUD 支援 company/role/status/search 篩選,後續補 password/api-key patch
Projects 基本 CRUD 支援 company_id/status/priority 篩選,補 sqlmock 測試
Bots 基本 CRUD 無大改進(仍需補 retry/validate)
Destinations 基本 CRUD 支援 project/bot/status/validation/tenant/search 篩選
Notifications 基本 CRUD,無一致性保證 Create 包 transaction,新增篩選 (project/sender/status/date range/search),輸出 DTO (snake_case)
文件 README 與 smoke test README、API_README、DB_SETUP、command.md 全面更新,Swagger UI 上線
測試 無 test file,僅 smoke test 新增 repo 層 sqlmock 測試,go test ./... 全綠燈

三、測試與驗證

  • go test ./... 全數綠燈(含新增的 sqlmock 測試:company/user/project/destination/notification repo)。
  • curl 驗證所有新增功能,並用 docker exec ... psql 確認 DB 寫入一致性。
  • Smoke test 仍在,但已逐步被 repo 測試補強。

四、心得與反思

  • API 已從「能跑 CRUD」升級為「能篩選、能 patch、能對齊文件」
  • 最大的進步是 測試與 transaction:不再依賴膠帶綁水管,而是用鋼筋水泥固定。
  • 不足之處:
    • 還有一些高階功能未完成(retry、validate、provision)。
    • 測試雖然增加,但還是以 repo 為主,缺少 end-to-end integration test。

五、明日計畫

  • 強化 整合測試:模擬完整 API 流程,而不是單表。
  • 開始規劃 Bot Webhook / Provision API
  • Swagger/OpenAPI 與 CI pipeline 串起來,確保每次更新都有一致的 API 文件驗證。

✍️ 今日一句話總結
昨天是工地通電,今天是工地拉水電、鋪管線、裝窗戶,API 已經能用,還附上說明書,離「可以入住」又近了一步。


上一篇
第十一日:從零到 CRUD,API 工地正式開張
下一篇
# 第十三日:整合測試出巡,Swagger 登場
系列文
Vibe Code與context engineering來打造個人專屬夥伴14
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言