一、路徑參數(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í)選填的