一、fastapi簡介:
FastAPI 是一個用于構建 API 的現代、快速(高性能)的 web 框架,使用基于類型提示的 Python 3.6 及更高版本。
二、關鍵特性:
快速:可與 NodeJS 和 Go 比肩的極高性能(歸功于 Starlette 和 Pydantic)。最快的 Python web 框架之一。
高效編碼:提高功能開發速度約 200% 至 300%。
更少 bug:減少約 40% 的人為(開發者)導致錯誤。
智能:極佳的編輯器支持。處處皆可自動補全,減少調試時間。
簡單:設計的易于使用和學習,減少閱讀文檔時間。
簡短:減少代碼重復。通過不同的參數聲明實現豐富功能。bug 更少。
健壯:生產可用級別的代碼。以及自動生成的交互式文檔。
標準化:基于 API 的相關開放標準并完全兼容:OpenAPI (以前被稱為 Swagger) 和 JSON Schema。
官方文檔:
https://fastapi.tiangolo.com
源碼地址:
https://github.com/tiangolo/fastapi
三、安裝
1.fastapi安裝
假設你已經安裝pip,那么可以直接使用pip命令進行安裝:
pip install fastapi
你還需要一個 ASGI 服務器,生產環境可以使用 Uvicorn 或者 Hypercorn。
2.開發服務器安裝
pip install uvicorn
四、示例
1.創建
創建一個 main.py 文件并寫入以下內容:
from fastapi import FastAPI
App = FastAPI()
@app.get("/")
def read_root():
return {"Hello": "World"}
@app.get("/items/{item_id}")
def read_item(item_id: int, q: str = None):
return {"item_id": item_id, "q": q}
或者使用 async def
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def read_root():
return {"Hello": "World"}
@app.get("/items/{item_id}")
async def read_item(item_id: int, q: str = None):
return {"item_id": item_id, "q": q}
2.運行
通過以下命令運行服務器:
uvicorn main:app --reload
關于 uvicorn main:app --reload 命令
uvicorn main:app 命令含義如下:
main:main.py 文件(一個 Python "模塊")。
app:在 main.py 文件中通過 app = FastAPI() 創建的對象。
--reload:讓服務器在更新代碼后重新啟動。僅在開發時使用該選項。
運行服務器成功會出現以下信息:
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)INFO: Started reloader process [28720]INFO: Started server process [28722]INFO: Waiting for application startup.INFO: Application startup complete.
檢查
使用瀏覽器訪問
http://127.0.0.1:8000/items/5?q=somequery。
你將會看到如下 JSON 響應:
{"item_id": 5, "q": "somequery"}
你已經創建了一個具有以下功能的 API:
- 通過 路徑 / 和 /items/{item_id} 接受 HTTP 請求。
- 以上 路徑 都接受 GET 操作(也被稱為 HTTP 方法)。
- /items/{item_id} 路徑 有一個 路徑參數 item_id 并且應該為 int 類型。
- /items/{item_id} 路徑 有一個可選的 str 類型的 查詢參數 q。
五、api文檔使用
1.交互式文檔:
現在訪問
http://127.0.0.1:8000/docs
你會看到自動生成的交互式 API 文檔(由 SwaggerUI生成):
2.備選 API 文檔
訪問
http://127.0.0.1:8000/redoc。
你會看到另一個自動生成的文檔(由 ReDoc)生成: