Python: 使用 Flask 實作 REST API

本文件是建立 REST API指南的一部分。請在此處查看完整指南:使用 Python 的 Flask 建立 REST API 的逐步指南

👋 歡迎來到 Stackhero 文件中心!

Stackhero 提供即時可用的 Python 雲端 解決方案,專為簡化您的部署流程而設計:

  • 只需一個簡單的 git push,即可在數秒內將您的應用程式部署到正式環境。
  • 支援自訂網域名稱,並為您自動設定 HTTPS 憑證,確保連線安全。
  • 享有自動備份一鍵更新可預測的計價,讓您專注於程式開發,而無需煩惱基礎架構管理。
  • 專屬私有基礎架構上,獲得強大的效能安全性。您的執行環境完全隔離並受到保護。

節省時間簡化您的工作流程:透過 Stackhero 的 Python 雲端主機,您的程式碼只需 5 分鐘即可上線運作。

現在您可以開始撰寫 API 程式碼。

建立一個名為 app.py 的檔案,並加入以下程式碼:

import os
from dotenv import load_dotenv
from flask import Flask, jsonify, request

# 非 production 環境時,從 .env 載入環境變數
if os.environ.get('ENV') != 'production':
    load_dotenv()

app = Flask(__name__)

# 範例任務資料
tasks = [
    {
        'id': 1,
        'title': 'Buy groceries',
        'description': 'Milk, Cheese, Pizza, Fruits',
        'done': False
    },
    {
        'id': 2,
        'title': 'Learn Python',
        'description': 'Learn Python programming basics',
        'done': False
    }
]

@app.route('/api/tasks', methods=['GET'])
def get_tasks():
    return jsonify({'tasks': tasks})

@app.route('/api/tasks/<int:task_id>', methods=['GET'])
def get_task(task_id):
    task = [task for task in tasks if task['id'] == task_id]
    if not task:
        return jsonify({'error': 'Task not found'}), 404
    return jsonify({'task': task[0]})

@app.route('/api/tasks', methods=['POST'])
def create_task():
    if not request.json or 'title' not in request.json:
        return jsonify({'error': 'Title is required'}), 400
    task = {
        'id': tasks[-1]['id'] + 1,
        'title': request.json['title'],
        'description': request.json.get('description', ""),
        'done': False
    }
    tasks.append(task)
    return jsonify({'task': task}), 201

if __name__ == '__main__':
    if os.environ.get('ENV') == 'production':
        app.run()
    else:
        app.run(host='0.0.0.0', port=8080, debug=True)

您可以使用以下指令啟動伺服器:

python app.py

使用 host='0.0.0.0' 時,您的 API 可在 Code-Hero 透過瀏覽器存取。請造訪 http://<XXXXXX>.stackhero-network.com:8080/api/tasks,將 <XXXXXX> 替換為您的 Code-Hero 網域。