请求参数
5.1 Request请求
我们通过浏览器访问后端的url地址,其实是向后端发送了一个http的request请求
graph
subgraph A [交互流程]
U[用户<br>浏览器/手机/平板]
B[FastAPI服务]
U --① Request请求<br>url地址+请求体数据--> B
B -- ② Response响应<br>数据--> U
end
我们既可以使用浏览器请求,也可以借助pycharm的http工具,模拟Request请求
注意:默认情况下,在浏览器的地址栏中输入网站直接请求发送的是GET请求方式

5.2 Request数据提取
前端向后端传递数据方式主要有以下几种:
- 路径参数
- 查询字符串
- 请求体
- Header
5.2.1 URL 路径参数 (Path Parameters)
路径参数是 URL 路径本身的一部分,用于唯一标识或定位资源。
声明与自动类型转换
- 声明方式:在路径装饰器中,使用
{parameter_name}语法声明路径参数,并在函数参数中接收它 。 - 类型强制转换:通过类型注解,FastAPI 会自动尝试进行类型转换。如果客户端提供的参数值无法转换为指定类型(例如,期望
int却收到了"hello"),FastAPI 会自动返回422 Unprocessable Entity错误,无需手动编写检查代码。
main.py中编写如下代码


5.2.2 URL 查询参数 (Query Parameters)
查询参数是 URL 中 ? 之后的部分,以 key=value 形式出现,通常用于过滤、分页或排序。
默认值与可选性
- 定义方式:在路径操作函数中,任何未在路径中声明,且未使用
Body等特殊函数修饰的参数,都被视为查询参数 。 - 可选性与默认值:如果函数参数带有默认值(如
limit: int = 10),则该参数是可选的。如果客户端未提供,则使用默认值。如果参数没有默认值,则为必填参数 。
main.py文件中编写如下代码:

5.2.3 请求体 (Request Body)
请求体是客户端向服务器发送大量结构化数据的最主要方式,通常用于 POST、PUT 或 PATCH 请求 。
注意:POST请求需要借助pycharm的http工具
Pydantic BaseModel 的核心作用
在进行请求体数据解析提取时,需要使用Pydantic进行数据获取和验证
- 声明模型:必须定义一个继承自
pydantic.BaseModel的类,使用 Python 类型注解定义期望的字段和结构 。 - 声明请求体:将路径操作函数的参数类型注解设置为这个 Pydantic 模型(例如
item: Item)。FastAPI 会识别这是一个请求体参数,并执行以下流程 :- 解析传入的 JSON 数据。
- 严格验证数据是否符合
Item模型的定义。 - 如果验证成功,将一个
Item类的实例注入到函数中。
main.py文件中编写如下代码:
test_main.http文件中编写如下代码


5.2.4 特殊参数(Header, Cookie)
除了上述主要来源外,FastAPI 还允许精确地从 HTTP 协议的其他部分提取数据,这需要使用 fastapi 中特定的函数进行标记。
I. HTTP 头部参数 (Header Parameters)
要从 HTTP 头部中提取参数,您需要导入并使用 Header 进行标记。
main.py中编写如下代码:
test_main.http文件中编写如下代码:
注意:Header数据编写格式:
X-Token后直接冒号
正确写法
X-Token: klasdkqwlkasd错误写法
X-Token : klasdkqwlkasd

Header的数据传入后字段转化规则:
大写会被转为小写,如: Tom --> tom
-转化为_, 如 User-Name --> user_name
II. Cookie 参数 (Cookie Parameters)
要读取客户端发送的 Cookie,需要导入并使用 Cookie 函数。
main.py中编写如下代码:
test_main.http文件中编写如下代码

Cookie本质上也是Header中的数据,也可以通过Header获取cookie数据