python-web开发

2、fastApi-请求参数

2023-07-28  本文已影响0人  许忠慧

一、路径参数

路径参数就是必须在路径中定义参数

1、基础语法

from fastapi import FastAPI

app = FastAPI()


# 传递一个参数
@app.get("/{item1}")
def root(item1):
    return f"请求时传递了一个参数: {item1}"

效果预览:

2、定义传入参数类型

# 参数后加冒号,加参数类型进行参数类型定义
def root(item1: int):
数据类型 类型说明 举个例子
str 字符串
float 浮点数
int 整数
bool 布尔值
UUID 一种标准的 "通用唯一标识符"。在请求和响应中将以 str 表示 123456
datetime.datetime 日期时间格式 2008-09-15T15:53:00+05:00
datetime.date 日期格式 2008-09-15
datetime.time 时间格式 14:23:55.003
datetime.timedelta 时间戳,在请求和响应中将表示为 float 代表总秒数
frozenset 在请求和响应中,作为 set 对待
bytes 标准的 Python bytes
Decimal 标准的 Python Decimal,在请求和相应中被当做 float 一样处理

定义了参数传入类型后,如果传入的参数不符合类型,则会出现如下提示:

3、传递多个参数

语法:

# 传递多个参数
@app.get("/{item1}&{item2}")
def root(item1, item2):
    return f"请求时传递了两个参数. 参数1 = {item1}, 参数2 = {item2}"

效果预览:

4、多个参数2

语法:

# 查询参数
@app.get("/{index}/info/{names}")
def root(index: int, names: str):
    return f"请求时传递了两个参数. 参数1 = {index}, 参数2={names}"

效果预览:

多个参数2.png

二、查询参数

查询参数就是不用在路径中定义参数,而是直接将参数定义到方法中

1、基础语法

# 查询参数
@app.get("/")
def root(item1, item2):
    return f"请求时传递了两个参数. 参数1 = {item1}, 参数2 = {item2}"

效果预览:

查询参数.png

此时,使用浏览器访问必须填参数,否则会报错

2、默认值

语法:

# 查询参数
@app.get("/")
def root(item1: int=10, item2: str="参数2"):
    return f"请求时传递了两个参数. 参数1 = {item1}, 参数2={item2}"

效果预览:

有默认值的情况下,请求时可以不填对应参数

3、可选参数

语法:

from typing import Union


# 查询参数
@app.get("/")
def root(item1: int = 10, item2: Union[str, None] = None):
    return f"请求时传递了两个参数. 参数1 = {item1}, 参数2={item2}"

效果:

四、请求体

一般用作json数传递

from pydantic import BaseModel

app = FastAPI()


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


# 查询参数
@app.post("/")
def root(item: Item):
    return f"name = {item.name}, age={item.age}, sex = {item.sex}"

同样的,如果请求体中定义的内容有默认值,则请求体参数在请求时时选填的

上一篇下一篇

猜你喜欢

热点阅读