系列文章:
FastAPI 學習之路(一)fastapi--高性能web開發框架
之前的文章分享了如何去在請求中增加參數,本文我們將分享如何增加查詢參數。
有這樣的一個需求,我們需要請求參數中增加參數,返回對應參數的值,我們不能在請求路徑中增加。
我們看下在代碼中如何實現?
from fastapi import FastAPI app = FastAPI() data=['北京','上海','深圳'] @app.get("/items/") def read_item(start: int = 0, end: int = 2): return data[start:end]
我們默認規定了兩個參數,一個是start另一個是end,初始值是0和2,那么我看下請求結果
那么我們看下增加參數如何返回
可以正常返回接口參數組合返回的結果。錯誤的類型返回
所以,當聲明了 Python 類型(在上面的示例中為 int
)時,它們將轉換為該類型並針對該類型進行校驗。
我們在上面的請求中,我們默認給了默認值,當我們沒有給參數的是時候,實際就是。
#請求地址 http://127.0.0.1:8000/items/ #實際相當於 http://127.0.0.1:8000/items/?start=0&end=2
那么假如我們有這樣的一個需求,參數end是可選擇的參數,有end就返回需求的,沒有end 返回所有的。如何實現呢
from fastapi import FastAPI from typing import Optional app = FastAPI() data=['北京','上海','深圳'] @app.get("/items/") def read_item(start: int = 0, end: Optional[int] =None): if end: return data[start:end] return data[start:-1]
我們不傳入end參數,接口返回
當我們傳遞end參數,默認返回
這樣我們的需求就完成了。
參數在請求到后端默認給我們轉化了,當我們傳入的end或者start的類型不對的時候。
這樣就是參數類型是自動去轉化的。
有這樣的一個需求,我們希望start是一個必填的參數,end是一個可以選填的參數,我們應該如何去實現呢。代碼如下:
from fastapi import FastAPI from typing import Optional app = FastAPI() data=['北京','上海','深圳'] @app.get("/items/") def read_item(start: int , end: Optional[int] =None): if end: return data[start:end] return data[start:-1]
我們去請求下:
當我們輸入start參數,看下接口的返回