1.FastAPI介紹
阿新 • • 發佈:2022-04-01
FastAPI介紹
目錄
一、 Fastapi是什麼
FastAPI 框架,高效能,易於學習,高效編碼,生產可用
FastAPI 是一個用於構建 API 的現代、快速(高效能)的 web 框架,使用 Python 3.6+ 並基於標準的 Python 型別提示。
二、Fastapi特點
-
快速:可與 NodeJS 和 Go 比肩的極高效能(歸功於 Starlette 和 Pydantic)。最快的 Python web 框架之一。
-
高效編碼
-
更少 bug:減少約 40% 的人為(開發者)導致錯誤。*
-
智慧:極佳的編輯器支援。處處皆可自動補全,減少除錯時間。
-
簡單:設計的易於使用和學習,閱讀文件的時間更短。
-
簡短:使程式碼重複最小化。通過不同的引數宣告實現豐富功能。bug 更少。
-
健壯:生產可用級別的程式碼。還有自動生成的互動式文件。
-
標準化:基於(並完全相容)API 的相關開放標準:OpenAPI (以前被稱為 Swagger) 和 JSON Schema。
-
根據對某個構建線上應用的內部開發團隊所進行的測試估算得出。
三、 使用簡介
1. 依賴
版本 Python 3.6 +
Fastapi 主要依賴一下兩個庫:
-
Starlette 主要負責web部分
-
Pydantic 負責資料部分
2. 安裝
# [fastapi v0.74.0]
pip install fastapi
# 還需要一個ASGI [uvicorn v0.17.5]
pip install uvicorn[standart]
3. 示例
- 建立 main.py 檔案
from fastapi import FastAPI from typing import Optional app = FastAPI() @app.get("/") def read_root(): return {"data": "hello world"} @app.get("/items/{item_id}") def get_item(item_id: int, q: Optional[str] = None): return {"item_id": item_id, "q": q}
你已經建立了一個具有以下功能的 API:
- 通過 路徑
/
和/items/{item_id}
接受 HTTP 請求。 - 以上 路徑 都接受
GET
操作(也被稱為 HTTP 方法)。 -
/items/{item_id}
路徑 有一個 路徑引數item_id
並且應該為int
型別。 -
/items/{item_id}
路徑 有一個可選的str
型別的 查詢引數q
。
- 執行 main.py 檔案
# main: 程式檔案的檔名
# app: 主程式入口函式
# reload: 讓伺服器在更新程式碼後重新啟動。僅在開發時使用該選項
$ uvicorn main:app --reload
INFO: Will watch for changes in these directories: ['/workspace/fastapitest']
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO: Started reloader process [62315] using statreload
INFO: Started server process [62317]
INFO: Waiting for application startup.
INFO: Application startup complete.
- 檢查
使用瀏覽器訪問 http://127.0.0.1:8000/items/7788?q=somestr
# 瀏覽器將會顯示
{"item_id":7788,"q":"somestr"}
- 互動API文件 (原swagger)
現在訪問 http://127.0.0.1:8000/docs
你會看到自動生成的互動式 API 文件(由 Swagger UI生成):
- 可選API文件 redoc
訪問 http://127.0.0.1:8000/redoc 。
你會看到另一個自動生成的文件(由 ReDoc 生成):