2025年9月15日 星期一

Flask API 介面規劃(mongoDB) drive

 

Flask API 介面規劃

您的 Flask 應用程式 (flask-app) 將作為一個 RESTful API 伺服器,提供一組標準的 HTTP 方法(GET, POST, PUT, DELETE)來對 MongoDB 中的資料進行操作。

API 端點 (Endpoints) 範例

假設您要管理一個名為 documents 的文件集合,您可以設計以下 API 端點:

HTTP 方法端點 (Endpoint)功能說明
POST/api/documents建立新文件:接收一個 JSON 格式的檔案資料,將其儲存到 MongoDB。
GET/api/documents/<file_id>查詢指定文件:根據文件的唯一 ID (file_id) 從 MongoDB 檢索並返回單個文件資料。
GET/api/documents查詢所有文件:從 MongoDB 檢索並返回所有文件的列表。可以加上過濾或分頁參數(例如 /api/documents?page=1)。
PUT/api/documents/<file_id>更新文件:根據文件的 ID,接收更新後的 JSON 資料,並更新 MongoDB 中的對應文件。
DELETE/api/documents/<file_id>刪除文件:根據文件的 ID,從 MongoDB 中刪除對應的文件。

程式碼和目錄結構

您的專案目錄 (eapp) 應該包含以下核心檔案:

eapp/
├── app.py           # 主要的 Flask 應用程式檔案
├── requirements.txt # 列出所有 Python 套件
└── ...

requirements.txt

這個檔案將列出所有 Python 專案所需的套件,特別是 Flaskpymongo (或 Flask-PyMongo)。

Flask
pymongo

app.py 程式邏輯

app.py 中,您需要處理以下邏輯:

  1. 連接到 MongoDB: 使用 pymongo 庫來建立與 MongoDB 的連接。連接字串會使用 MONGO_HOST 環境變數。

    Python
    import os
    from pymongo import MongoClient
    
    mongo_host = os.environ.get('MONGO_HOST', 'localhost')
    client = MongoClient(f'mongodb://{mongo_host}:27017/')
    db = client.your_database_name
    documents_collection = db.documents
    
  2. 定義 API 路由: 使用 @app.route 裝飾器來定義每個 API 端點,並編寫對應的處理函數。

    Python
    from flask import Flask, request, jsonify
    
    app = Flask(__name__)
    
    @app.route('/api/documents', methods=['POST'])
    def create_document():
        data = request.get_json()
        result = documents_collection.insert_one(data)
        return jsonify({"_id": str(result.inserted_id)}), 201
    
    # 這裡可以加入其他 GET, PUT, DELETE 路由
    
  3. 錯誤處理: 確保您的 API 在遇到錯誤時能返回有意義的 HTTP 狀態碼和錯誤訊息(例如,找不到文件時返回 404 Not Found)。

專案整合與部署

  1. Dockerfile: Dockerfile 將負責安裝 requirements.txt 中指定的套件,並將 app.py 複製到容器中。

  2. docker-compose up: 一旦您的程式碼和 Dockerfile 都準備好,只需在專案根目錄下執行 docker-compose up -d 命令,Docker Compose 就會自動:

    • 啟動 MongoDB 容器。

    • 根據 Dockerfile 建置 Flask 應用程式映像檔。

    • 啟動 Flask 應用程式容器,並將其連接到 MongoDB 服務。

    • 將主機的 5000 埠映射到 Flask 容器,使外部程式能夠透過 http://localhost:5000 呼叫您的 API。

這套設計模式提供了一個穩定、可擴展且易於維護的解決方案,

讓您能夠專注於 API 邏輯的開發,而無需擔心底層的基礎設施。

沒有留言:

張貼留言