2、fastApi-請(qǐng)求參數(shù)

一、路徑參數(shù)

路徑參數(shù)就是必須在路徑中定義參數(shù)

1、基礎(chǔ)語(yǔ)法

from fastapi import FastAPI

app = FastAPI()


# 傳遞一個(gè)參數(shù)
@app.get("/{item1}")
def root(item1):
    return f"請(qǐng)求時(shí)傳遞了一個(gè)參數(shù): {item1}"

效果預(yù)覽:

2、定義傳入?yún)?shù)類型

# 參數(shù)后加冒號(hào),加參數(shù)類型進(jìn)行參數(shù)類型定義
def root(item1: int):
數(shù)據(jù)類型 類型說(shuō)明 舉個(gè)例子
str 字符串
float 浮點(diǎn)數(shù)
int 整數(shù)
bool 布爾值
UUID 一種標(biāo)準(zhǔn)的 "通用唯一標(biāo)識(shí)符"。在請(qǐng)求和響應(yīng)中將以 str 表示 123456
datetime.datetime 日期時(shí)間格式 2008-09-15T15:53:00+05:00
datetime.date 日期格式 2008-09-15
datetime.time 時(shí)間格式 14:23:55.003
datetime.timedelta 時(shí)間戳,在請(qǐng)求和響應(yīng)中將表示為 float 代表總秒數(shù)
frozenset 在請(qǐng)求和響應(yīng)中,作為 set 對(duì)待
bytes 標(biāo)準(zhǔn)的 Python bytes
Decimal 標(biāo)準(zhǔn)的 Python Decimal,在請(qǐng)求和相應(yīng)中被當(dāng)做 float 一樣處理

定義了參數(shù)傳入類型后,如果傳入的參數(shù)不符合類型,則會(huì)出現(xiàn)如下提示:

3、傳遞多個(gè)參數(shù)

語(yǔ)法:

# 傳遞多個(gè)參數(shù)
@app.get("/{item1}&{item2}")
def root(item1, item2):
    return f"請(qǐng)求時(shí)傳遞了兩個(gè)參數(shù). 參數(shù)1 = {item1}, 參數(shù)2 = {item2}"

效果預(yù)覽:

4、多個(gè)參數(shù)2

語(yǔ)法:

# 查詢參數(shù)
@app.get("/{index}/info/{names}")
def root(index: int, names: str):
    return f"請(qǐng)求時(shí)傳遞了兩個(gè)參數(shù). 參數(shù)1 = {index}, 參數(shù)2={names}"

效果預(yù)覽:

多個(gè)參數(shù)2.png

二、查詢參數(shù)

查詢參數(shù)就是不用在路徑中定義參數(shù),而是直接將參數(shù)定義到方法中

1、基礎(chǔ)語(yǔ)法

# 查詢參數(shù)
@app.get("/")
def root(item1, item2):
    return f"請(qǐng)求時(shí)傳遞了兩個(gè)參數(shù). 參數(shù)1 = {item1}, 參數(shù)2 = {item2}"

效果預(yù)覽:

查詢參數(shù).png

此時(shí),使用瀏覽器訪問(wèn)必須填參數(shù),否則會(huì)報(bào)錯(cuò)

2、默認(rèn)值

語(yǔ)法:

# 查詢參數(shù)
@app.get("/")
def root(item1: int=10, item2: str="參數(shù)2"):
    return f"請(qǐng)求時(shí)傳遞了兩個(gè)參數(shù). 參數(shù)1 = {item1}, 參數(shù)2={item2}"

效果預(yù)覽:

有默認(rèn)值的情況下,請(qǐng)求時(shí)可以不填對(duì)應(yīng)參數(shù)

3、可選參數(shù)

語(yǔ)法:

from typing import Union


# 查詢參數(shù)
@app.get("/")
def root(item1: int = 10, item2: Union[str, None] = None):
    return f"請(qǐng)求時(shí)傳遞了兩個(gè)參數(shù). 參數(shù)1 = {item1}, 參數(shù)2={item2}"

效果:

四、請(qǐng)求體

一般用作json數(shù)傳遞

from pydantic import BaseModel

app = FastAPI()


# 必須要繼承 BaseModel
class Item(BaseModel):
    name: str
    age: int
    sex: bool


# 查詢參數(shù)
@app.post("/")
def root(item: Item):
    return f"name = {item.name}, age={item.age}, sex = {item.sex}"

同樣的,如果請(qǐng)求體中定義的內(nèi)容有默認(rèn)值,則請(qǐng)求體參數(shù)在請(qǐng)求時(shí)時(shí)選填的

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容