嗨嗨!大家好!歡迎來到 Rust 三十天挑戰的第十九天!
經過前十八天的紮實學習,我們已經掌握了 Rust 的基礎語法、核心概念、以及現代開發技術。現在是時候將所學知識融會貫通,開始我們的最終專案!
今天我們要規劃一個個人部落格後端 API——這不是給千萬用戶使用的大型系統,而是專為你自己量身打造的寫作平台。讓我們用個人創作者的角度來思考這個專案。
寫作體驗:
讀者體驗:
管理需求:
個人部落格不需要複雜的用戶系統,讓我們專注於核心功能:
文章 (Post)
├── 標題、內容、摘要
├── 發布狀態(草稿/發布)
├── 建立和更新時間
├── 瀏覽次數
└── 關聯的標籤
標籤 (Tag)
├── 名稱和描述
├── 文章計數
└── 顏色標記(前端顯示用)
留言 (Comment)
├── 留言者資訊(名稱、信箱)
├── 留言內容
├── 審核狀態
└── 所屬文章
GET /api/posts # 文章列表,支援分頁和標籤篩選
GET /api/posts/:id # 單一文章詳情
GET /api/tags # 標籤列表
GET /api/tags/:name/posts # 特定標籤的文章
POST /api/posts/:id/comments # 新增留言
GET /api/posts/:id/comments # 文章的留言列表
GET /api/health # 系統健康檢查
POST /api/admin/posts # 建立新文章
PUT /api/admin/posts/:id # 更新文章
DELETE /api/admin/posts/:id # 刪除文章
POST /api/admin/tags # 建立標籤
PUT /api/admin/tags/:id # 更新標籤
DELETE /api/admin/tags/:id # 刪除標籤
PUT /api/admin/comments/:id/approve # 審核留言
DELETE /api/admin/comments/:id # 刪除留言
GET /api/admin/stats # 統計資訊
1. 寫草稿 → 儲存為 Draft
2. 預覽效果 → 前端渲染 Markdown
3. 發布文章 → 狀態改為 Published
4. 讀者互動 → 留言需要我審核
5. 內容維護 → 隨時可以編輯或隱藏
寫作時標籤:
- 可以建立新標籤
- 自動建議相似標籤
- 支援標籤的顏色分類
讀者瀏覽標籤:
- 依文章數量排序
- 顯示每個標籤的文章數
- 標籤頁面列出相關文章
留言發布流程:
1. 讀者填寫名稱、信箱、內容
2. 系統記錄 IP 和時間
3. 簡單的垃圾檢測
4. 進入待審核狀態
5. 我審核後才顯示
個人部署的現實:
- 可能只有一台小 VPS
- 需要容易備份和遷移
- 希望能自動化部署
- 成本要可控
雖然我們只做後端,但要考慮前端的需求:
{
"success": true,
"data": {
"post": {
"id": 1,
"title": "我的第一篇 Rust 文章",
"content": "# Rust 真是太棒了...",
"excerpt": "今天開始學習 Rust...",
"published_at": "2025-01-15T10:30:00Z",
"view_count": 42,
"tags": [
{"name": "rust", "color": "#8B5CF6"},
{"name": "programming", "color": "#10B981"}
]
}
}
}
個人部落格的特色:
- 不追求大量內容,追求品質
- 反映個人的思考和成長過程
- 可能有各種主題的文章
- 希望與讀者建立真誠的連結
簡單而不簡陋:
- 功能精簡但完整
- 程式碼清晰易維護
- 效能優秀但不過度優化
- 安全可靠但不複雜
我想寫什麼樣的內容?
我希望讀者如何與我互動?
我的寫作習慣是什麼?
我對部落格的長期規劃?
基於個人需求的決策:
今天我們為個人部落格做了貼心的規劃:
需求理解:
架構設計:
個人化考量:
技術準備:
明天我們將進入 Day 20:選擇你的 Web 框架:Actix Web vs. Axum!
我們會實際比較這兩個框架對於個人部落格專案的適用性:
然後選擇最適合我們的框架,並建立第一個 "Hello, Personal Blog!" 服務!
💭 今日思考題:
想想你理想中的個人部落格應該是什麼樣子?
- 你最希望它有什麼功能?
- 你最擔心什麼技術難點?
- 你希望讀者在你的部落格有什麼樣的體驗?
準備好開始打造屬於你自己的個人部落格了嗎?從明天開始,我們就要動手實現這個專屬於你的創作平台了!
我們明天見!!