1. 前言 API(Application Programming Interface,應用程式介面)是一種讓軟體之間能夠相互通訊的機制。近年來,許多網頁服務與應用程式都提供 API,開發者可以透過這些 API 取得資料或進行系統整合。Python 因為語法簡潔、函式庫豐富,非常適合用於使用與開發 API。 本文將介紹關於「Python API」的基礎知識,並說明如何使用 Python 呼叫 API,甚至進一步開發自己的 API。1.1 什麼是 API? API(Application Programming Interface)是一種讓不同軟體或服務能共享資料與功能的機制。例如天氣預報 App 在取得氣象資料時,就會使用外部天氣服務提供的 API。 API 主要可應用於以下情境:資料取得: 例如社群平台貼文、天氣預報、股票資訊等資料傳送: 像是使用者註冊、表單送出、付款處理等系統整合: 將不同的應用或服務進行串接 API 有多種類型,其中最常見的是 REST API(Representational State Transfer API) 。它透過 HTTP 通訊協定,讓客戶端(像是 App 或瀏覽器)與伺服器進行請求與回應的互動。1.2 使用 Python 操作與建立 API 的優勢 Python 是非常適合用來操作或開發 API 的程式語言。以下列出幾個主要原因:1.2.1 使用簡單的程式碼呼叫 API Python 中常用的 requests
函式庫,只需幾行程式碼即可呼叫 API 並取得資料。import requests
response = requests.get("https://api.example.com/data")
print(response.json()) # 顯示取得的資料
如上所示,Python 讓你可以輕鬆與 API 進行互動。1.2.2 可使用功能強大的 Web 框架 Python 提供多種強大的框架可用來建立 API,其中最受歡迎的是 Flask 與 FastAPI 。Flask: 輕量、簡單,適合新手快速建立 API。FastAPI: 活用 Python 的型別提示,打造高速且安全的 API。1.2.3 擁有豐富的函式庫與擴充性 Python 擁有許多與 API 整合良好的函式庫,例如資料處理、機器學習、雲端服務整合等。requests
:簡化 API 通訊json
:處理 API 回應中的 JSON 格式資料Flask
/ FastAPI
:用來建立 API 的 Web 框架SQLAlchemy
:將 API 與資料庫連接的 ORM 工具 善用這些工具,可大幅提升開發效率。1.3 本文將學到的內容 本文將完整說明如何使用 Python 來 呼叫 API 與 建立 API 。使用 Python 呼叫 API 的方法 使用 requests
進行 API 請求 處理 API 回應(JSON 解析) 實作錯誤處理 使用 Python 建立 API 的方法 使用 Flask / FastAPI 建立 Web API 與資料庫的整合 實作身份驗證與安全性 Python API 的實務應用 部署至雲端平台(Heroku、AWS Lambda) 效能優化方法 無論是想學習如何使用 API,或是想打造自己的 API,本指南都能提供實用知識。接下來的章節將以具體程式碼說明 如何使用 Python 呼叫 API 。
2. 如何使用 Python 呼叫 API【新手向】 使用 Python,可以呼叫外部 API 來取得或傳送資料。本章節將說明使用 Python 呼叫 API 的基本方式,內容包含以下幾個部分:如何使用 Python 呼叫 API 使用 requests
函式庫發送 HTTP 請求 如何處理 API 的回應 錯誤處理與因應方式 3. 如何使用 Python 建立 API【Flask 與 FastAPI】 Python 提供了多種框架來建立 API,其中以 Flask 和 FastAPI 最受歡迎。這一章節將說明如何使用這兩種框架來建立 API。 本章節將涵蓋以下內容:建立 Web API 的基本流程 使用 Flask 建立簡單 API 使用 FastAPI 建立高效能 API 與資料庫整合 API 的安全性對策 3.1 如何建立 Web API? 建立 API 時,通常會依照以下步驟進行開發:選擇框架 (如 Flask 或 FastAPI)設計 API 的端點 (決定 URL 與資料內容)定義請求與回應 (使用 JSON 來傳遞資料)與資料庫連接 (可使用 SQL 或 NoSQL)實施驗證與安全措施 (如 API 金鑰或 JWT) 接下來會說明使用 Flask 和 FastAPI 開發 API 的方法。3.2 使用 Flask 建立簡單的 API Flask 是一個簡單且輕量的 Web 框架,非常適合用來快速開發小型 API。3.2.1 安裝 Flask 首先需要安裝 Flask 函式庫:pip install flask
3.2.2 使用 Flask 建立基本 API 以下是使用 Flask 建立簡單 API 的範例:from flask import Flask, jsonify
app = Flask(__name__)
@app.route('/api/hello', methods=['GET'])
def hello():
return jsonify({"message": "Hello, World!"})
if __name__ == '__main__':
app.run(debug=True)
程式碼說明 建立 Flask
實例 使用 @app.route
定義 API 路徑 使用 jsonify()
回傳 JSON 格式資料 執行 app.run(debug=True)
啟動本機伺服器 執行程式後,瀏覽 http://127.0.0.1:5000/api/hello
即可看到 “Hello, World!” 的 JSON 回應。3.3 使用 FastAPI 建立高效能 API FastAPI 是一款現代化的框架,支援 Python 3.7+ 的型別提示,可用來建立高速又安全的 API。3.3.1 安裝 FastAPI 可透過以下指令安裝:pip install fastapi uvicorn
(uvicorn
是執行 FastAPI 的 ASGI 伺服器)3.3.2 使用 FastAPI 建立簡單 API 以下是 FastAPI 建立 API 的基本範例:from fastapi import FastAPI
app = FastAPI()
@app.get("/api/hello")
def hello():
return {"message": "Hello, FastAPI!"}
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="127.0.0.1", port=8000)
3.4 與資料庫整合 建立 API 時,通常會需要存取資料庫,以下說明如何使用 SQLite 和 SQLAlchemy 進行整合。3.4.1 使用 SQLite 與 SQLAlchemy 先安裝所需函式庫:pip install sqlalchemy sqlite
以下是與 Flask 結合的範例:from flask import Flask, jsonify
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///test.db"
db = SQLAlchemy(app)
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(80), nullable=False)
@app.route("/api/users", methods=["GET"])
def get_users():
users = User.query.all()
return jsonify([{"id": user.id, "name": user.name} for user in users])
if __name__ == "__main__":
db.create_all()
app.run(debug=True)
3.5 API 的安全性對策 將 API 公開時,務必考慮以下安全措施:3.5.1 加入認證與授權機制 使用 API 金鑰 :限制存取 API 的權限使用 JWT(JSON Web Token) :強化使用者驗證3.5.2 驗證資料格式 FastAPI 可利用型別提示自動驗證輸入資料:from pydantic import BaseModel
from fastapi import FastAPI
app = FastAPI()
class UserRequest(BaseModel):
name: str
age: int
@app.post("/api/users")
def create_user(user: UserRequest):
return {"message": f"{user.name}({user.age}歲)已註冊成功"}
小結 本章節介紹了如何使用 Python 建立 API,重點如下:使用 Flask 建立簡單 API 使用 FastAPI 建立高效能 API 透過 SQLAlchemy 整合資料庫 強化 API 的安全性(驗證與資料檢查)
4. 如何部署 Python API 開發完成後,要讓 API 可以在雲端上運行,就必須進行部署。本章節將介紹幾種 Python API 的部署方式。 內容大綱如下:在本地環境運行 API 部署至雲端平台的方法 使用 Heroku 部署 使用 AWS Lambda 進行無伺服器部署 API 的效能優化方式 4.1 在本地運行 API 部署前,應先在本地端確認 API 是否正常運行。4.1.1 執行 Flask 應用 請依以下步驟操作:將 Flask 程式碼儲存為 app.py
在終端機執行下列指令 python app.py
執行後,Flask 應用將於 http://127.0.0.1:5000/ 運行。4.1.2 執行 FastAPI 應用 使用以下指令啟動 FastAPI:uvicorn main:app --host 127.0.0.1 --port 8000 --reload
啟動後,可於 http://127.0.0.1:8000/ 存取 API。4.2 將 API 部署至雲端平台 在本地測試完成後,就可以部署至雲端平台。以下介紹兩種常見的部署方式。4.2.1 使用 Heroku 進行部署 Heroku 是一個支援 Python 的雲端平台,可以快速部署應用程式。Heroku 部署步驟 安裝 Heroku CLI 前往官方網站(https://devcenter.heroku.com/articles/heroku-cli)進行安裝 登入 Heroku 帳號 heroku login
初始化 Git 倉庫 git init
heroku create my-python-api
建立必要的檔案 requirements.txt
:列出所需函式庫 flask gunicorn
Procfile
:Heroku 使用的程序定義檔案 web: gunicorn app:app
提交 Git 並部署 git add .
git commit -m "Deploy API to Heroku"
git push heroku main
開啟應用程式網址 heroku open
至此,你的 Python API 已成功在 Heroku 上部署並公開使用。4.2.2 使用 AWS Lambda 進行無伺服器部署 AWS Lambda 可以讓你無需管理伺服器就能在雲端執行 API。AWS Lambda 部署 FastAPI 步驟 安裝 AWS Lambda 所需函式庫 pip install mangum
建立 FastAPI 應用(main.py
) from fastapi import FastAPI
from mangum import Mangum
app = FastAPI()
@app.get("/")
def hello():
return {"message": "Hello from AWS Lambda"}
handler = Mangum(app)
部署至 AWS Lambda 可透過 AWS API Gateway 整合 使用 AWS CLI 或網頁控制台上傳 這樣就能在不需啟用伺服器的情況下執行 API。4.3 提升 API 效能的方法 部署後,可透過以下方式來提升 API 的回應速度與穩定性。4.3.1 使用快取(Cache)機制 快取可以提升 API 回應速度、降低伺服器負擔。 from flask_caching import Cache
cache = Cache(app, config={'CACHE_TYPE': 'simple'})
@app.route('/data')
@cache.cached(timeout=60) # 快取 60 秒
def get_data():
return {"message": "Cached data"}
from fastapi.middleware.cors import CORSMiddleware
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
4.3.2 活用非同步處理 FastAPI 支援 非同步(async) ,可提升處理效率。from fastapi import FastAPI
app = FastAPI()
@app.get("/async")
async def async_endpoint():
return {"message": "This is an async endpoint"}
4.3.3 使用負載平衡(Load Balancing) 當 API 流量變大時,可透過負載平衡分散壓力。在 AWS 中使用 Elastic Load Balancer(ELB) Heroku 中可使用 Auto Scaling 小結 本章節介紹了如何將 Python API 部署到雲端平台,重點如下:在本地測試 API 使用 Heroku 快速部署 透過 AWS Lambda 進行無伺服器部署 API 效能優化技巧(快取、非同步、負載平衡) 5. Python API 常見問題(FAQ) 以下整理了關於 Python API 開發與使用的常見問題,適合初學者與中階開發者參考。5.1 有哪些免費的 API 可以用來測試 Python? 初學者可以透過下列免費 API 服務進行測試與練習:5.2 Web 爬蟲與 API 有什麼不同? 兩者都是用來取得外部資料的方式,但原理與效率不同:項目 Web 爬蟲 API 方法 解析 HTML 頁面取得資料 透過請求直接取得結構化資料 速度 較慢(需等待網頁載入) 較快(直接存取資料) 穩定性 網頁變動易導致錯誤 通常穩定可靠 合法性 過度抓取可能違反規範 API 官方提供,使用安全
結論: 如果有 API 可用,建議優先使用 API。5.3 如何安全地管理 API 金鑰? 大多數 API 為了控制存取權限,會使用 API 金鑰(API Key) ,以下是安全管理方式:5.3.1 使用環境變數儲存金鑰 請勿直接將金鑰寫入程式碼中,建議使用環境變數。export API_KEY="your-secret-api-key"
import os
api_key = os.getenv("API_KEY")
print(f"API 金鑰: {api_key}")
5.3.2 使用 .env
檔案 也可使用 .env
檔案搭配 python-dotenv
套件: API_KEY=your-secret-api-key
pip install python-dotenv
from dotenv import load_dotenv
import os
load_dotenv()
api_key = os.getenv("API_KEY")
print(f"API 金鑰: {api_key}")
5.4 Flask 與 FastAPI 有何差異? 項目 Flask FastAPI 設計理念 簡單輕量 高速並支援型別提示 效能 較慢(同步處理) 較快(非同步處理) 型別檢查 無(需手動) 有(自動驗證) API 文件 需手動撰寫 自動產生(Swagger UI 等) 適用情境 小型專案、學習用途 高速 API、正式環境
5.5 如何提升 API 效能? 5.5.1 快取(Cache) 快取可減少重複請求並提升回應速度:from flask_caching import Cache
cache = Cache(app, config={'CACHE_TYPE': 'simple'})
@app.route('/data')
@cache.cached(timeout=60)
def get_data():
return {"message": "Cached data"}
from fastapi.middleware.cors import CORSMiddleware
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
5.5.2 使用 async 非同步處理 from fastapi import FastAPI
app = FastAPI()
@app.get("/async")
async def async_endpoint():
return {"message": "This is an async endpoint"}
5.5.3 使用負載平衡 API 請求量大時,建議使用以下方式分散負載:AWS Elastic Load Balancer(ELB) Heroku Auto Scaling Nginx 作為反向代理伺服器 小結 本章節解答了開發與使用 Python API 時的常見疑問,包括:免費的測試 API Web 爬蟲與 API 的比較 安全地管理 API 金鑰的方法 Flask 與 FastAPI 的差異 API 效能優化技巧 善用這些知識,能夠開發出更安全、高效且易於維護的 API。 歡迎你實際動手試試看,開發屬於自己的 Python API!