iT邦幫忙

2023 iThome 鐵人賽

DAY 1
0
Modern Web

FastAPI 如何 Fast ? 框架入門、實例、重構與測試系列 第 1

[Day01] FastAPI 推坑與框架的朋友們

  • 分享至 

  • xImage
  •  

[Day01] FastAPI 推坑與框架的朋友們

FastAPI 是由 :

這兩個框架作為基礎搭建的

FastAPI 優點

速度快

django / flask / FastAPI 大比拼

  • web framework benchmark 中查詢這三個框架的比較,可見 FastAPI 比 django / flask 快上約 5 ~ 10 倍
    • 在 Request / Second 的圖表:
    • 在 Average Latency 的圖表:

內建支援 async function

並且 FastAPI 支援 async function

@app.get("/async")
async def async_hello_world():
    return "Hello World"

@app.get("/sync")
def sync_hello_world():
    return "Hello World"

內建支援 OpenAPI (Swagger) 規範

跑起 FastAPI 後,可以在 http://localhost:port/docs 看到 Swagger UI
在開發初期測試時非常方便!

內建型別檢查

如果喜歡 TypeScript 那一定也會喜歡 FastAPI

可以在

  • API endpoint 的輸入參數或輸出參數
  • endpoint 與 CRUD 之間的傳遞

都可以透過 Schema 作為型別檢查的基礎
Schema 就是由 Pydantic 所提供的 BaseModel 繼承而來
如下面的例子:

from datetime import datetime
from pydantic import BaseModel

class UserBase(BaseModel):
    id: int
    name: str
    country: str
    age: int

class UserCreate(UserBase):
    address: str
    birthday: datetime
    password: str

class UserPubic(UserBase):
    pass

class UserPricate(UserBase):
    address: str
    birthday: datetime
    password: str

讓我們在寫 FastAPI 時,會有寫 TypeScript 的既視感

FastAPI 之於 其他 python 後端框架架,就像 typescript 之於 javascript (單指的是語法層面)

Summary

FastAPI 的優點:

  • 速度快
    • 比 django / flask 快上約 5 ~ 10 倍
    • 支援 async / await
  • 內建支援 OpenAPI (Swagger) 規範
    • 在開發初期測試時非常方便!
  • 內建型別檢查
    • TypeScript 的感覺
  • 容易測試
    • 有提供 TestClient ,並可以透過 pytest 進行測試
  • 豐富文件與社群

reference

About me

Github : jason810496
2023 鐵人賽 FastAPI repository

之後每天的 code 都會開在 DayXX branch , 可以 clone 下來跑
希望可以成功完賽🔥


下一篇
[Day02] FastAPI 啟動: 環境安裝
系列文
FastAPI 如何 Fast ? 框架入門、實例、重構與測試31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言