iT邦幫忙

2026 iThome 鐵人賽

DAY 11
0
ChatGPT & Codex

窮鬼冰箱升級計劃系列 第 11 篇

【Day 11】Raspberry Pi Backend / FastAPI 專案拆成真正的 Application

  • 分享至 

  • xImage
  •  

前言

  • 出大事啦各位!
  • 在 Raspberry Pi 上目前,運行 FastAPI (Python)
  • 目前專案的樹狀結構如下
    beggarFridge/
    │
    ├── app/
    │   └── main.py
    │
    ├── photos/
    ├── database/
    │   └── fridge.db
    │
    ├── .venv/
    └── requirements.txt
    
  • 根據 AI 推導出後面可能會有的架構 main.py 中,會包含了 很多很多 API,在同一個檔案中,是個破千行的程式
    main.py
    ├── Wi-Fi Device API
    ├── Photo API
    ├── Product API
    ├── Inventory API
    ├── Barcode
    ├── Camera
    ├── Recipe
    ├── AI
    └── Notification
    
  • 將 Backend 拆分多個 Layer
    • API Layer:外面的 ESP32 / iPad 怎麼跟我說話?
    • Service Layer:智慧冰箱要做什麼?
    • Data Layer:資料存在哪裡?
    ┌────────────────────────────┐
    │         API Layer          │
    │         FastAPI            │
    │                            │
    │ GET /api/products          │
    │ POST /api/photos           │
    └─────────────┬──────────────┘
                  │
                  ▼
    ┌────────────────────────────┐
    │       Service Layer        │
    │                            │
    │ PhotoService               │
    │ InventoryService           │
    └─────────────┬──────────────┘
                  │
                  ▼
    ┌────────────────────────────┐
    │        Data Layer          │
    │                            │
    │ SQLite                     │
    │ File System                │
    └────────────────────────────┘
    

拆分 main.py

Router

  • 把前面幾篇做出來的 FastAPI 程式碼片段,根據不同功能,分拆成三個檔案,並且歸類到 routers 這個目錄
    app/
    ├── main.py
    │
    └── routers/
        ├── __init__.py
        ├── health.py
        ├── photos.py
        └── products.py
    

詳情請見 gitHub


上一篇
【Day 10】加上 OLED 液晶螢幕模組
下一篇
【Day 12】條碼解析技術比較
系列文
窮鬼冰箱升級計劃 共 12 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言