4-1、技術亮點
食譜平台後端技術與功能總結
使用技術(後端)
語言與框架
C#、ASP.NET Framework 4.8(Web API 模式)
ORM 工具
Entity Framework
資料庫
SQL Server(透過 SSMS 操作)
驗證機制
JWT 自訂驗證、Google OAuth 登入
API 測試
Postman
第三方整合
Vimeo API(影片上傳與處理狀態查詢)
主機部署
Azure VM(已開放 HTTP/HTTPS)
HTTPS 憑證
Cloudflare + 自訂網域
資料表與功能模組
食譜(Recipe)模組
建立/編輯食譜
含食材、步驟、封面圖、影片連結等
草稿與發布管理
透過 IsPublished
/ IsDeleted
/ IsArchived
控制瀏覽權限與狀態
標籤系統
多對多 RecipeTags
關聯表設計
食譜編號
使用類似 R000001
格式做流水號
分頁 API
回傳 hasMore
flag 判斷是否還有資料
使用者(User)模組
JWT 驗證
自訂 JwtAuthFilter
,用來取得登入身分
Google OAuth 登入
串接 Google 登入後回傳 token 並綁定帳號
使用者資料
顯示 displayId、暱稱、照片、介紹等
限制邏輯
作者不能對自己留言/收藏/評分/追蹤
收藏與留言評分
收藏食譜
判斷是否已收藏並可取消
評分與留言
一次送出留言與評分,分開儲存於 Ratings 和 Comments 表中
隨機資料生成
批次產生假留言與評分(排除作者)
評分上限檢查
最高不得超過 5.0 分
追蹤系統
追蹤/取消追蹤
只能追蹤他人,無法追蹤自己
顯示追蹤狀態
判斷是否已追蹤該作者
Vimeo 影片處理
影片上傳
支援透過 Vimeo API 上傳食譜影片
處理狀態
使用 /video
資訊與 polling 方式檢查是否轉檔完成
草稿瀏覽
即使影片處理中,仍可進入草稿預覽畫面
廣告模組
建立廣告
接收 multipart/form-data,處理圖片與欄位驗證
廣告圖片
儲存多張圖片,限制副檔名 .jpg
.png
.webp
廣告標籤
多對多關聯 AdTags
點擊與曝光
寫入 AdViewLogs
,記錄 session 使用者行為
效果統計
每月寫入 AdMonthlyPerformances
報表資料
權限控管
僅管理員可建立/修改廣告內容
特別處理過的挑戰點
Entity Framework 種子資料時避免 IDENTITY_INSERT 錯誤
SQL 中防止重複留言、評分(PRIMARY KEY:UserId + RecipeId)
自訂 DisplayId(例如 M000001、R000005)避免亂數 UUID
Vimeo 處理延遲導致播放失敗 → 改為狀態輪詢 + 草稿顯示機制
Git 推送被拒(rejected)→ 使用
git stash
與rebase
解決衝突團隊協作流程:透過 Notion 記錄功能與技術問題追蹤
Last updated