Fast API 測試記錄

2021-10-24 10:06:08 字數 2059 閱讀 7192

fastapi

特點:編輯器支援

資料格式自動轉換

資料格式自動校驗

自動生成註解和文件

如果這個引數已經再路徑中被宣告過,那麼它就是乙個請求引數。

如果這個引數的型別是單型別(如str,float, int, bool)等,那麼它就是乙個請求引數。

如果這個引數的型別是pydantic資料模型,那麼它就被認為是request body引數。

item : item = body(… , embed=true)

不帶預設值的引數應該放在前面,如過把帶了預設值的引數放在不帶預設值的前面,python 會發出執行警告。因此在實際使用時,我們應該把不帶預設值的引數放在前面,無論這個引數是路徑引數還是請求引數。fast api根據引數名稱、型別以及宣告方法來識別具體引數的意義,並不關心引數順序。

引數排序技巧,通過傳遞*作為第乙個引數,就解決了上面引數順序的問題。這是因為,python 不會對*做任何操作。但通過識別*,python知道後面的引數都是關鍵字引數(鍵值對),通常也叫kwargs,無論引數是否有預設值。

資料型別引數的校驗,借助query、path等模組你可以對字串型別引數的校驗,同樣的,也可以是實現數字型別引數的校驗功能。

gt : 大於(greater than)

ge: 大於或等於 (greater than or equal)

lt: 小於(less than)

le: 小於或等於(less than or  equal)

數字校驗也同樣適用於float型別的引數。

pydantic模型的附加資訊。也可以通過field的模組,為pydantic模組新增附加資訊。

fastapi利用response模型實現以下功能:

將輸出資料轉換成宣告的response模型;

將資料進行校驗

生成自動化文件

(最重要)限制輸出資料只能是所宣告的response模型。

例如,當我們設定多個輸出模型的示例,在路徑操作中,我們宣告的response模型可以通過指定,限制輸出資料。

常見的錯誤資訊為:

這些錯誤的http狀態碼一般為400錯誤(400-499)

丟擲異常

在**中丟擲異常httpexception.

fastapi有一些預設的異常處理器,當我們丟擲httpexception異常或者請求有非法資料的時候,這些處理器負責返回預設的json結果。我們可以重寫這些異常處理器

中介軟體實際上是乙個函式,在每個request處理之前被呼叫,同時又在每個response返回之前被呼叫。

首先接受訪問過來的request

然後針對request或其他功能執行自定義邏輯

傳遞request給應用程式繼續處理

接受應用所產生的response

然後針對response或其他功能執行自定義邏輯

返回response

後台任務(如果有)會在中介軟體執行完成後才會執行

中介軟體接受兩個引數:

1. request

2.函式call_next:傳遞request給相應的路徑操作,然後從路徑操作中返回response。我們可以在response返回之前對其進行更改。

我們可以在呼叫函式call_next之前,即任何路徑操作接收到request之前,新增一些自定義邏輯。

也可以在response產生之後,新增一些自定義邏輯,如上所示的新增自定義頭資訊。

其中,第乙個引數是中介軟體類,同時還支援中間間的其他附加資訊。

gzipmiddleware支援 minimum_size引數:當返回結果大大小小指定值時不啟用壓縮。

"依賴注入"非常適用於以下使用場景:

業務邏輯復用

共享資料庫鏈結

安全機制、許可權校驗、角色管理等等

其他使用場景

所有上述使用場景,借助於「依賴注入」可以明確提高**復用,減少**重複

FastAPI學習 2 fastapi引數詳解

1.檢視fastapi原始碼 引數如下 from fastapi import fastapi from starlette.responses import jsonresponse 此型別不可少 from starlette.routing import route request引數不可少 a...

FastAPI學習 RequestBody請求體

get操作不能使用requestbody,post put delete patch可以。請求體使用前,必須要引入pydantic庫中的basemodel類進行宣告,傳入前建立相應的資料模型 from fastapi import fastapi from pydantic import basem...

fastapi 實戰 綜述

本系列主講終端部分 訂單分發和完成 主要功能 從分發平台接收訂單 將訂單分發給各使用者完成任務 雖然整個專案很簡單,但是會涉及比較全面的知識,包括 快取 定時任務 佇列任務 orm使用 後台任務。一系列的工具基本上是fastapi的web開發所需的全部。涉及知識棧 準備階段為購買伺服器,搭建k8s,...