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}"
同样的,如果请求体中定义的内容有默认值,则请求体参数在请求时时选填的