首頁>技術>

介紹

FastApi是一個Python平臺下的API框架,其具備高效能、簡單易學、高效率的特點,可以快速用於生產環境,據了解,其效能可媲美nodejs和go!

Github

FastAPI在Github上正在越來越被受歡迎,單日收穫stars數達上百,目前總數截止發文已經超過16.6k

https://github.com/tiangolo/fastapi

特性

FastAPI 是一個用於構建 API 的現代、快速(高效能)的 web 框架,使用 Python 3.6+ 並基於標準的 Python 型別提示。

快速:可與 NodeJS 和 Go 比肩的極高效能(歸功於 Starlette 和 Pydantic)。最快的 Python web 框架之一。高效編碼:提高功能開發速度約 200% 至 300%。*更少 bug:減少約 40% 的人為(開發者)導致錯誤。*智慧:極佳的編輯器支援。處處皆可自動補全,減少除錯時間。簡單:設計的易於使用和學習,閱讀文件的時間更短。簡短:使程式碼重複最小化。通過不同的引數宣告實現豐富功能。bug 更少。健壯:生產可用級別的程式碼。還有自動生成的互動式文件。標準化:基於(並完全相容)API 的相關開放標準:OpenAPI (以前被稱為 Swagger) 和 JSON Schema。

* 根據對某個構建線上應用的內部開發團隊所進行的測試估算得出。

依賴

Python 3.6 及更高版本,FastAPI 站在以下巨人的肩膀之上:

Starlette 負責 web 部分。Pydantic 負責資料部分。安裝pip install fastapi

還會需要一個 ASGI 伺服器,生產環境可以使用 Uvicorn 或者 Hypercorn。

pip install uvicorn示例建立一個 main.py 檔案並寫入以下內容:from typing import Optionalfrom fastapi import FastAPIapp = FastAPI()@app.get("/")def read_root(): return {"Hello": "World"}@app.get("/items/{item_id}")def read_item(item_id: int, q: Optional[str] = None): return {"item_id": item_id, "q": q}執行

通過以下命令執行伺服器:

uvicorn main:app --reload

使用瀏覽器訪問 http://127.0.0.1:8000/items/5?q=somequery

{"item_id": 5, "q": "somequery"}

已經建立了一個具有以下功能的 API:

通過 路徑 / 和 /items/{item_id} 接受 HTTP 請求。以上 路徑 都接受 GET 操作(也被稱為 HTTP 方法)。/items/{item_id} 路徑 有一個 路徑引數 item_id 並且應該為 int 型別。/items/{item_id} 路徑 有一個可選的 str 型別的 查詢引數 q互動式文件

現在訪問 http://127.0.0.1:8000/docs。

會看到自動生成的互動式 API 文件(由 Swagger UI生成):

還有一個可選的Redoc文件

效能

獨立機構 TechEmpower 所作的基準測試結果顯示,基於 Uvicorn 執行的 FastAPI 程式是 最快的 Python web 框架之一,僅次於 Starlette 和 Uvicorn 本身(FastAPI 內部使用了它們)

總結

從目前的發展來看,FastAPI是一個非常值得使用的框架,其效能和開發效率都非常的高,感興趣的小夥伴可以研究一下!

最新評論
  • 1 #

    效能大約是go的1/2-1/3

  • 2 #

    go感覺很有前途,據說效能python效率

  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • mall 改造:首頁訪問頻繁,我們應該用什麼方法提高響應效率?