国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

Python FastAPI 新手入門:半小時搭建高性能 API

開發
本文將從零基礎帶你入門,通過八個代碼實例,一步步掌握 FastAPI 的核心用法!

FastAPI 是 Python 生態中最熱門的 Web 框架之一,以 高性能、自動生成文檔、強類型提示 為核心優勢,尤其適合構建 RESTful API 和數據接口。本文將從零基礎帶你入門,通過 8 個代碼實例,一步步掌握 FastAPI 的核心用法!

一、環境準備

首先安裝依賴庫(Python 3.7+ 版本):

pip install fastapi uvicorn
  • fastapi:框架核心
  • uvicorn:ASGI 服務器(用于運行 FastAPI 應用)

二、Hello World:第一個 FastAPI 應用

創建文件 main.py,寫入以下代碼:

from fastapi import FastAPI

# 創建 FastAPI 實例
app = FastAPI()

# 定義路由:GET 請求 + 根路徑
@app.get("/")
def read_root():
    return {"message": "Hello FastAPI!"}

# 啟動命令(終端運行):
# uvicorn main:app --reload

運行效果:

(1) 終端執行啟動命令后,看到如下輸出:

INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO:     Started reloader process [xxxxx] using WatchFiles

(2) 瀏覽器訪問 http://127.0.0.1:8000,會看到 JSON 響應:

{"message": "Hello FastAPI!"}

(3) 自動生成接口文檔:訪問 http://127.0.0.1:8000/docs,會看到 Swagger UI 風格的交互式文檔(支持直接測試接口);訪問 http://127.0.0.1:8000/redoc,則是更簡潔的 ReDoc 文檔。

三、核心功能:路徑參數與查詢參數

1. 路徑參數(URL 中的參數)

用于傳遞必須的資源標識(如用戶 ID、商品 ID):

from fastapi import FastAPI

app = FastAPI()

# 路徑參數:item_id 是路徑的一部分,類型提示為 int
@app.get("/items/{item_id}")
def read_item(item_id: int, q: str = None):
    return {"item_id": item_id, "q": q}

2. 查詢參數(URL 中 ? 后的參數)

用于傳遞可選的過濾條件(如分頁、搜索關鍵詞):

# 訪問示例:/items/5?q=apple
# 響應:{"item_id": 5, "q": "apple"}

# 若不傳 q:/items/5
# 響應:{"item_id": 5, "q": null}

3. 類型校驗與默認值

FastAPI 會自動根據類型提示做數據校驗:

# 若訪問 /items/abc(item_id 不是 int),會返回 422 錯誤:
# {"detail": [{"loc": ["path", "item_id"], "msg": "value is not a valid integer", "type": "type_error.integer"}]}

四、請求體:接收 JSON 數據

用于創建資源時傳遞復雜數據(如用戶注冊、提交表單),需配合 Pydantic 做數據校驗:

from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()

# 定義請求體模型(Pydantic)
class Item(BaseModel):
    name: str          # 必選字段(無默認值)
    price: float       # 必選字段
    is_offer: bool = None  # 可選字段(默認值為 None)

# 接收 POST 請求 + JSON 體
@app.post("/items/")
def create_item(item: Item):
    return {"item_name": item.name, "item_price": item.price}

測試方式:

(1) 訪問 http://127.0.0.1:8000/docs,找到 /items/ 接口,點擊「Try it out」,輸入 JSON:

{
  "name": "iPhone",
  "price": 5999.9,
  "is_offer": true
}

(2) 點擊「Execute」,響應結果:

{"item_name": "iPhone", "item_price": 5999.9}

(3) 若缺少必選字段(如 name),會自動返回 422 錯誤提示。

五、綜合示例:圖書管理 API

下面用一個完整的 CRUD 示例,展示 FastAPI 的實際應用:

from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
from typing import List, Optional

app = FastAPI()

# 1. 定義數據模型
class Book(BaseModel):
    id: Optional[int] = None  # ID 可選(創建時自動生成)
    title: str
    author: str
    price: float

# 2. 模擬數據庫(實際項目用 MySQL/PostgreSQL)
books = [
    Book(id=1, title="Python 編程", author="張三", price=59.9),
    Book(id=2, title="FastAPI 入門", author="李四", price=49.9)
]

# 3. CRUD 接口實現
# 獲取所有圖書
@app.get("/books", response_model=List[Book])
def get_all_books():
    return books

# 獲取單本圖書(按 ID)
@app.get("/books/{book_id}", response_model=Book)
def get_book(book_id: int):
    for book in books:
        if book.id == book_id:
            return book
    # 若未找到,返回 404 錯誤
    raise HTTPException(status_code=404, detail="圖書不存在")

# 創建圖書
@app.post("/books", response_model=Book)
def create_book(book: Book):
    # 生成新 ID(取最后一本書的 ID +1,若為空則為 1)
    new_id = books[-1].id + 1 if books else 1
    new_book = Book(id=new_id, **book.dict())
    books.append(new_book)
    return new_book

# 更新圖書
@app.put("/books/{book_id}", response_model=Book)
def update_book(book_id: int, updated_book: Book):
    for idx, book in enumerate(books):
        if book.id == book_id:
            # 保持原 ID,更新其他字段
            books[idx] = Book(id=book_id, **updated_book.dict())
            return books[idx]
    raise HTTPException(status_code=404, detail="圖書不存在")

# 刪除圖書
@app.delete("/books/{book_id}")
def delete_book(book_id: int):
    for idx, book in enumerate(books):
        if book.id == book_id:
            books.pop(idx)
            return {"detail": "圖書已刪除"}
    raise HTTPException(status_code=404, detail="圖書不存在")

測試效果:

  • 訪問 http://127.0.0.1:8000/docs,可直觀測試所有接口
  • 例如創建圖書時,傳入 JSON 會自動校驗字段類型
  • 響應結果會嚴格按照 response_model 格式返回

六、實用特性:依賴注入

FastAPI 的依賴注入系統可簡化代碼復用(如權限校驗、數據庫連接):

from fastapi import FastAPI, Depends

app = FastAPI()

# 定義依賴項(可復用的邏輯)
def get_current_user():
    # 實際項目中可從 Token 解析用戶信息
    return {"username": "admin", "role": "admin"}

# 接口中依賴該函數
@app.get("/users/me")
def read_current_user(user: dict = Depends(get_current_user)):
    return user

運行效果:

訪問 /users/me,響應:

{"username": "admin", "role": "admin"}

七、跨域處理(CORS)

若前端(如 Vue/React)訪問 API,需解決跨域問題:

from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware

app = FastAPI()

# 配置允許的來源、方法、 headers
app.add_middleware(
    CORSMiddleware,
    allow_origins=["*"],  # 生產環境需指定具體域名(如 ["http://localhost:8080"])
    allow_credentials=True,
    allow_methods=["*"],  # 允許所有 HTTP 方法
    allow_headers=["*"],  # 允許所有請求頭
)

@app.get("/")
def read_root():
    return {"message": "跨域已配置"}

八、部署到生產環境

開發環境用 --reload 自動重啟,生產環境需優化配置:

# 生產環境啟動命令(使用 Gunicorn 作為反向代理)
pip install gunicorn

# 運行:workers 為 CPU 核心數 * 2 + 1
gunicorn -w 4 -k uvicorn.workers.UvicornWorker main:app

九、總結

FastAPI 的核心優勢:

  • 高性能:基于 ASGI 協議,支持異步,性能接近 Node.js/Go
  • 自動文檔:無需額外配置,生成交互式 API 文檔
  • 強類型校驗:Pydantic 保證數據合法性,減少調試成本
  • 易用性:語法簡潔,學習曲線平緩

后續可深入學習:異步接口、WebSocket、身份認證(JWT)、數據庫集成(SQLAlchemy)等功能。

責任編輯:趙寧寧 來源: Python小甲魚
相關推薦

2011-02-21 17:51:39

Zimbra入門新手

2013-12-24 10:04:01

PostgreSQL

2011-05-31 16:47:47

SEO

2011-01-10 14:36:00

新手linux基礎

2011-03-22 11:06:52

Nagios安裝

2010-06-23 15:00:50

Fix協議

2010-09-09 13:40:19

XML DOM

2010-05-28 18:22:51

MySQL基本操作

2019-10-22 18:00:00

MySQL基礎入門數據庫

2025-09-08 06:10:00

FastAPI開發web

2010-06-21 15:27:38

Linux apt-g

2011-06-30 17:41:46

SEO

2010-06-19 13:47:39

AMF協議

2025-09-08 11:00:00

2010-05-14 18:31:17

MySQL 定時數據備

2010-05-17 09:52:55

虛擬化VMware Play

2010-06-10 10:31:36

MySQL出錯代碼列表

2009-07-16 09:07:46

Linux使用技巧Linux入門Linux開發

2025-12-02 09:14:18

FastAPIweb開發

2025-12-03 10:00:00

依賴注入FastAPI?代碼
點贊
收藏

51CTO技術棧公眾號

亚洲涩涩在线| 欧美新色视频| 国产精品99一区二区三区| 91福利精品第一导航| 日本女人高潮视频| 久久99免费视频| 精品亚洲一区二区| 中文在线网在线中文| aaa欧美日韩| 久久久久久欧美精品色一二三四| 日韩专区视频网站| 欧美日韩高清在线播放| h动漫在线视频| 国产婷婷色一区二区三区在线| 久久久人人爽| 中文视频一区| 国产成人激情视频| 成人亚洲精品| 日韩精品在线视频美女| 天堂中文字幕| 亚洲免费看黄网站| 黄色国产一级视频| 懂色av中文一区二区三区| 永久免费精品视频网站| 亚洲资源av| 亚洲欧洲免费无码| 日本不卡的三区四区五区| 国产伦精品一区二区三区四区免费| 老牛精品亚洲成av人片| 国模精品视频一区二区三区| 日韩专区视频网站| 久久国产精品久久久久| 日韩精选在线| 国产91久久婷婷一区二区| 日韩毛片视频| 久久久久久九九| 精品在线免费观看| 免费日韩视频在线观看| 亚洲品质自拍视频网站| 色久视频在线观看| 精品国产一区二区三区av性色| 国产成人免费9x9x人网站视频| 色悠悠久久久久| 久久久加勒比| 产国精品偷在线| 国产激情一区二区三区桃花岛亚洲| www.av蜜桃| 亚洲国产欧美一区二区三区丁香婷 | 无码专区aaaaaa免费视频| 福利一区福利二区| 九色porny蝌蚪视频在线观看| 欧美日韩精品一区二区三区四区 | 一区二区三区四区在线观看国产日韩| 国产精品九九九| 亚洲免费毛片| 久久国产精品视频| 中文在线资源| 成人免费观看在线| 欧美尤物巨大精品爽| 欧美在线视频你懂得| 国产91丝袜在线18| 久久精品久久久| 色999韩欧美国产综合俺来也| 国外男同性恋在线看| 欧美三级电影在线播放| 国产精品美女www爽爽爽视频| 亚洲成人av资源网| 亚洲成人第一页| 成人免费的视频| 1024精品一区二区三区| 中文字幕一区二区三区中文字幕| 免费在线看黄色| 992tv在线观看免费进| 精品国产av无码一区二区三区| 亚洲一区二区久久久久久| 91wwwcom在线观看| 久久久精品999| 亚洲电影中文字幕| 欧美日韩中文另类| 丁香五六月婷婷久久激情| 久久久精品免费网站| 国产91精品一区二区麻豆网站| 久久婷婷一区| 久久国产精品99久久久久久老狼| 最新日韩av| 夜间精品视频| 日韩综合一区| 亚洲在线久久| 亚洲精品中文字幕乱码| 91久久久精品国产| 亚洲天堂成人| 亚洲无线视频| 亚洲二区免费| 亚洲在线成人| 蜜臀99久久精品久久久久久软件| 欧美日韩一区自拍| 亚洲xxx拳头交| 亚洲激情婷婷| 丝袜美腿亚洲色图| 亚洲免费影视| 国产亚洲精品bv在线观看| 欧美午夜久久| 99精品国产福利在线观看免费| 伊人影院久久| 国产精品久久麻豆| 日韩三级免费观看| 女厕嘘嘘一区二区在线播放| 日本中文字幕一区二区有码在线 | 九九九九九九精品| 国产一区二区三区丝袜 | 日韩av一区二区三区在线观看 | 欧美男男激情videos| 亚洲jjzzjjzz在线观看| 久久国产精品一区二区三区| 欧美成人国产va精品日本一级| 欧美日韩在线视频首页| 国产综合色精品一区二区三区| 在线日韩一区| 国产999精品久久久久久 | 96成人在线视频| 久久综合五月天| 337p日本欧洲亚洲大胆色噜噜| 国产精品成人免费在线| 国模无码大尺度一区二区三区| 456亚洲精品成人影院| 在线播放av更多| 手机看片福利日韩| 青青草视频国产| 日韩国产一区久久| 国产精品xxx视频| 97国产精品免费视频| 亚洲美女性视频| 日韩av网址在线观看| 亚洲成人精品在线| 亚洲国产精品悠悠久久琪琪| 色播五月激情综合网| 综合激情成人伊人| 久久亚洲影视婷婷| 99re热视频这里只精品| 成人一级片在线观看| 久久超碰97中文字幕| 国产情侣一区| 亚洲一区二区三区免费在线观看| 91成人看片| 欧美r级电影| 国产精品a级| 蜜桃视频免费观看一区| 国产老女人精品毛片久久| 国产精品一区二区在线观看不卡| 精品午夜久久福利影院| 国产一区二区三区四区在线观看| 国产乱人伦偷精品视频不卡| 久久综合网色—综合色88| 欧美国产一区二区| 一区二区三区成人在线视频| 精品久久久久久中文字幕一区奶水| 大桥未久av一区二区三区| 色婷婷狠狠综合| 欧美日韩一区二区三区高清 | 国产盗摄精品一区二区酒店| 成人精品一区二区三区电影| 欧美日韩一区二区三区在线电影 | 7878视频在线观看| 亚洲图区欧美| 日韩欧美精品一区二区三区| 成人亚洲精品| 欧美特黄一区| 91免费视频大全| 日本道在线观看一区二区| 亚洲欧美综合精品久久成人| 国产精品久久久久久五月尺| 亚洲精品tv久久久久久久久| 一区二区xxx| 欧美14一18处毛片| 日产精品一区二区| 狠狠色综合日日| 日本福利一区二区| 欧美激情精品久久久久久久变态| 亚洲一区亚洲二区| 免费在线观看亚洲视频| 69视频在线| 狠狠综合久久av一区二区蜜桃| 麻豆91精品视频| 欧美性生交大片免费| 国产+人+亚洲| 91午夜在线观看| 91福利在线免费| 欧美日韩一卡| 亚洲成人中文在线| 久久久久久综合网天天| 亚洲综合av一区| 在线中文字幕电影| 在线一区免费| 亚洲成人av资源| 国产精品日韩精品| 特级丰满少妇一级| 老司机aⅴ在线精品导航| 亚洲欧美影音先锋| 国产精品扒开腿爽爽爽视频 | 黑人巨大精品欧美一区二区三区 |