系列文章:
FastAPI 學習之路(一)fastapi--高性能web開發框架
什么是請求體:請求體是客戶端發送給 API 的數據。
什么是響應體:響應體是 API 發送給客戶端的數據。
大部分的請求都會有請求體的。你不能使用 GET 操作(HTTP 方法)發送請求體。
我們去寫一個例子,去定義一下請求體
from typing import Optional from fastapi import FastAPI from pydantic import BaseModel app = FastAPI() class Item(BaseModel): name: str desc: Optional[str] = None price: float @app.post("/items/") def create_item(item: Item): return item
那么我們部署下,然后用postman請求下
可以正常返回我們預期的結果。
我們在代碼中創建數據模型,然后數據模型聲明為繼承自 BaseModel
的類。
使用標准的 Python 類型來聲明所有屬性。
當一個模型屬性具有默認值時,它不是必需的。否則它是一個必需屬性。將默認值設為 None
可使其成為可選屬性。我們去請求下,當我們不傳遞desc看下。

從結果中,我們可以看出,當我們沒有傳遞參數的時候,默認是null,那么我看下如果我們沒有定義可選屬性的不傳遞,接口會怎么返回給我們呢。
我們可以看到,接口已經返回了對應的錯誤。所以當我們在定義的時候就可以對對應的參數進行是否是可選擇的參數。其實我們在定義的時候,也定義了類型,比如我們對應price定義是一個float,但是呢,我們現在給它傳遞一個str類型,比如五角。
接口返回的是一個類型錯誤,因為后台在處理的時候呢,默認轉化了類型,轉化失敗,就直接fastapi自動處理完畢了。並且返回了統一格式的返回值。
我們看下接口文檔。
接口文檔默認定義模型將成為生成的 OpenAPI 模式的一部分,並且在交互式 API 文檔中展示。
當然我們前面的請求體是沒有做處理,其實我們在實際中還是要處理呢,那么我們如何處理呢,其實很簡單,我們看下,當價格大於100,我們返回太貴了。 (西瓜要是100一斤,也很貴了。)
如何去實現呢。
from typing import Optional from fastapi import FastAPI from pydantic import BaseModel class Item(BaseModel): name: str desc: Optional[str] = None price: float app = FastAPI() @app.post("/items/") async def create_item(item: Item): if item.price>100: return "太貴了" return item
這樣就完成了,那么我們看下。請求是否返回正確,當傳遞的價格大於100
當我們去傳遞的價格小於100時候如何返回呢?
可以看到這樣是符合我們需求的。
