Python API 完整指南|使用方法、開發流程與部署教學全解析

目次

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,其中最受歡迎的是 FlaskFastAPI

  • 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,其中以 FlaskFastAPI 最受歡迎。這一章節將說明如何使用這兩種框架來建立 API。

本章節將涵蓋以下內容:

  • 建立 Web API 的基本流程
  • 使用 Flask 建立簡單 API
  • 使用 FastAPI 建立高效能 API
  • 與資料庫整合
  • API 的安全性對策

3.1 如何建立 Web API?

建立 API 時,通常會依照以下步驟進行開發:

  1. 選擇框架(如 Flask 或 FastAPI)
  2. 設計 API 的端點(決定 URL 與資料內容)
  3. 定義請求與回應(使用 JSON 來傳遞資料)
  4. 與資料庫連接(可使用 SQL 或 NoSQL)
  5. 實施驗證與安全措施(如 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)

程式碼說明

  1. 建立 Flask 實例
  2. 使用 @app.route 定義 API 路徑
  3. 使用 jsonify() 回傳 JSON 格式資料
  4. 執行 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 應用

請依以下步驟操作:

  1. 將 Flask 程式碼儲存為 app.py
  2. 在終端機執行下列指令
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 部署步驟
  1. 安裝 Heroku CLI
  • 前往官方網站(https://devcenter.heroku.com/articles/heroku-cli)進行安裝
  1. 登入 Heroku 帳號
   heroku login
  1. 初始化 Git 倉庫
   git init
   heroku create my-python-api
  1. 建立必要的檔案
  • requirements.txt:列出所需函式庫
    flask gunicorn
  • Procfile:Heroku 使用的程序定義檔案
    web: gunicorn app:app
  1. 提交 Git 並部署
   git add .
   git commit -m "Deploy API to Heroku"
   git push heroku main
  1. 開啟應用程式網址
   heroku open

至此,你的 Python API 已成功在 Heroku 上部署並公開使用。

4.2.2 使用 AWS Lambda 進行無伺服器部署

AWS Lambda 可以讓你無需管理伺服器就能在雲端執行 API。

AWS Lambda 部署 FastAPI 步驟
  1. 安裝 AWS Lambda 所需函式庫
   pip install mangum
  1. 建立 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)
  1. 部署至 AWS Lambda
  • 可透過 AWS API Gateway 整合
  • 使用 AWS CLI 或網頁控制台上傳

這樣就能在不需啟用伺服器的情況下執行 API。

4.3 提升 API 效能的方法

部署後,可透過以下方式來提升 API 的回應速度與穩定性。

4.3.1 使用快取(Cache)機制

快取可以提升 API 回應速度、降低伺服器負擔。

  • Flask 範例:
  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"}
  • FastAPI 範例:
  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 效能優化技巧(快取、非同步、負載平衡)
RUNTEQ(ランテック)|超実戦型エンジニア育成スクール

5. Python API 常見問題(FAQ)

以下整理了關於 Python API 開發與使用的常見問題,適合初學者與中階開發者參考。

5.1 有哪些免費的 API 可以用來測試 Python?

初學者可以透過下列免費 API 服務進行測試與練習:

服務名稱說明API 文件
Random User API取得隨機使用者資訊https://randomuser.me
OpenWeatherMap取得天氣資訊https://openweathermap.org/api
JSONPlaceholder取得假資料(貼文、留言、使用者等)https://jsonplaceholder.typicode.com

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 有何差異?

項目FlaskFastAPI
設計理念簡單輕量高速並支援型別提示
效能較慢(同步處理)較快(非同步處理)
型別檢查無(需手動)有(自動驗證)
API 文件需手動撰寫自動產生(Swagger UI 等)
適用情境小型專案、學習用途高速 API、正式環境

5.5 如何提升 API 效能?

5.5.1 快取(Cache)

快取可減少重複請求並提升回應速度:

  • Flask 範例:
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"}
  • FastAPI 範例:
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!