FastAPI 學習之路(五)


系列文章:

  FastAPI 學習之路(一)fastapi--高性能web開發框架

  FastAPI 學習之路(二)

  FastAPI 學習之路(三)

  FastAPI 學習之路(四)

 我們之前的文章分享了,如何增加參數,那么我們這次分享來看下請求體。

   什么是請求體:請求體是客戶端發送給 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時候如何返回呢?

 

 可以看到這樣是符合我們需求的。

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM