1. 程式人生 > 其它 >1.FastAPI介紹

1.FastAPI介紹

FastAPI介紹


目錄

一、 Fastapi是什麼

FastAPI 框架,高效能,易於學習,高效編碼,生產可用

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

二、Fastapi特點

  • 快速:可與 NodeJS 和 Go 比肩的極高效能(歸功於 Starlette 和 Pydantic)。最快的 Python web 框架之一

  • 高效編碼

    :提高功能開發速度約 200% 至 300%。*

  • 更少 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:

  1. 通過 路徑 / 和 /items/{item_id} 接受 HTTP 請求。
  2. 以上 路徑 都接受 GET 操作(也被稱為 HTTP 方法)。
  3. /items/{item_id} 路徑 有一個 路徑引數 item_id 並且應該為 int 型別。
  4. /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 生成):