天天看點

FastAPI(2)- 快速入門

進到 py 檔案所屬目錄的指令行

main:main.py 檔案(一個 Python「子產品」)

app:在 main.py 檔案中通過 app = FastAPI() 建立的對象

--reload:讓伺服器在更新代碼後自動重新啟動,僅在開發時使用該選項

FastAPI(2)- 快速入門

我這裡截圖的名字換了哈

FastAPI(2)- 快速入門
FastAPI(2)- 快速入門
FastAPI(2)- 快速入門

FastAPi 使用 API 的 OpenAPI 标準為所有 API 生成 schema

是對事物的一種定義或描述

它并非具體的實作代碼,而隻是抽象的描述

後面會詳說

OpenAPI 是一種規定如何定義 API Schema 的規範

定義的 OpenAPI Schema 将包括 API 路徑,以及它們可能使用的參數等等

比如:這個 API 的作用是什麼,需要必傳哪些參數,請求方法是什麼

指的是某些資料比如 JSON 的結構

它可以表示 JSON 的屬性及其具有的資料類型

比如:某個屬性的資料類型是什麼,有沒有預設值,是不是必填,作用是什麼

OpenAPI 會為 API 定義 API Schema,一般會包括 API 發送和接收的資料的定義,比如:發送的資料的類型、是否必填

這些定義會以 JSON資料格式展示出來,是以都會稱為 JSON Schema

原始的 OpenAPI Schema,其實它隻是一個自動生成的包含了所有 API 描述的 JSON 資料結構

FastAPI(2)- 快速入門

将上面最簡單的栗子代碼進行拆開詳解

FastAPI 是一個為 API 提供了所有功能的 Python 類,必寫就對了

FastAPI 是直接從 Starlette繼承的類,可以通過 FastAPI 使用所有的 Starlette 的功能

app 就是 FastAPI 類的一個執行個體對象啦

重點:app 将是建立所有 API 的主要互動對象

要點:uvicorn 執行指令時也會用到 app

指的是 URL 中從第一個 <code>/</code> 起的後半部分,即常說的 path

比如:https://example.com/items/foo 的路徑就是/items/foo

路徑也稱為:端點、路由

就是 HTTP 請求方法

POST

GET

PUT

DELETE

OPTIONS

HEAD

PATCH

TRACE

在 HTTP 協定中,可以使用以上的其中一種(或多種)「方法」與每個路徑進行通信

通常使用: 

POST:建立資料

GET:讀取資料

PUT:更新資料

DELETE:删除資料

有兩點含義

請求路徑為 /

使用 get 請求

其他請求方法的裝飾器

@app.post()

@app.put()

@app.delete()

@app.options()

@app.head()

@app.patch()

@app.trace()

這就是一個普通的 Python 函數

每當 FastAPI 接收一個使用 <code>GET</code> 方法通路路徑為  / 的請求時這個函數會被調用

在這個例子中,它是一個 async 函數(異步處理函數,後面會細說)

可以傳回一個 dict、list,也可以是 str、int 單個值

還可以傳回 Pydantic 模型(後面詳解)

還可以是其他會自動轉換為 JSON 的對象和模型(包括 ORM 對象等)

編寫一個最簡單的 FastAPI 應用程式五部曲

導入 FastAPI

建立一個 app 執行個體

編寫一個路徑操作裝飾器,如 @app.get("/") 

編寫一個路徑操作函數,如  def root(): ... 

運作開發伺服器,如  uvicorn main:app --reload