2.5 组合使用:路径参数 + 查询参数 + 请求体
FastAPI 初学者指南:轻松掌握路径参数、查询参数与请求体组合使用
面向Python初学者的FastAPI教程,通过生活化类比和动手实践,教你如何组合路径参数、查询参数和请求体,快速构建Web API。
FastAPI 入门教程:组合路径参数、查询参数和请求体
引言
想象一下,你走进一家餐厅。路径参数就像是桌子号(如“桌子3号”),查询参数像是你点的额外要求(如“加辣”),请求体则是你点的主菜信息(如“一份牛肉面”)。FastAPI 能让你轻松处理这些不同类型的“点餐请求”。
第一步:准备环境
在开始之前,确保你有Python安装。然后,打开终端或命令行,安装FastAPI和uvicorn。
pip install fastapi uvicorn
第二步:创建你的第一个FastAPI应用
新建一个Python文件,比如 main.py,并添加以下代码:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"message": "欢迎来到FastAPI世界!"}
运行它:
uvicorn main:app --reload
打开浏览器访问 http://127.0.0.1:8000,你会看到 {"message": "欢迎来到FastAPI世界!"}。这就是你的第一个成功时刻!
第三步:了解路径参数
路径参数是URL的一部分,用来指定资源ID。例如,/users/123 中的 123 是用户ID。
更新代码:
@app.get("/users/{user_id}")
def read_user(user_id: int):
return {"user_id": user_id, "name": f"用户{user_id}"}
访问 http://127.0.0.1:8000/users/1,返回 {"user_id": 1, "name": "用户1"}。又一个成功!
第四步:了解查询参数
查询参数是URL中 ? 后面的键值对,用于过滤或传递可选信息。例如,/users?name=John&age=25。
添加:
@app.get("/items/")
def read_items(skip: int = 0, limit: int = 10):
return {"skip": skip, "limit": limit}
访问 http://127.0.0.1:8000/items/?skip=5&limit=20,看看效果。
第五步:了解请求体
请求体用于发送数据到服务器,通常用于POST或PUT请求。想象成填写表单。
首先,需要导入 pydantic 来定义数据模型。但FastAPI内置支持,所以直接使用。
添加一个POST端点:
from pydantic import BaseModel
class Item(BaseModel):
name: str
description: str = None
price: float
tax: float = None
@app.post("/items/")
def create_item(item: Item):
return item
用工具(如curl或浏览器扩展)发送POST请求,看到返回的数据。
第六步:组合使用所有参数
现在,我们来创建一个复杂的端点,同时使用路径参数、查询参数和请求体。例如,更新用户信息的PUT端点。
@app.put("/users/{user_id}")
def update_user(user_id: int, query_param: str = None, item: Item = None):
# 这里,user_id是路径参数,query_param是查询参数,item是请求体
result = {"user_id": user_id, "query_param": query_param, "updated_item": item}
if item:
result["message"] = f"用户{user_id}的信息已更新为{item.name}"
return result
解释:
user_id:路径参数,必须提供,如/users/1。query_param:查询参数,可选,如?query_param=test。item:请求体,可选,需要发送JSON数据。
测试这个端点:
- 发送PUT请求到
http://127.0.0.1:8000/users/1?query_param=hello,请求体为{"name": "John", "price": 10.5}。
你会看到返回的JSON包含所有信息。这就是组合使用的威力!
生活化类比
- 路径参数:就像快递单上的收货地址,必须准确无误。
- 查询参数:就像订单备注,比如“要发票”,是可选的额外要求。
- 请求体:就像你填写的申请表,包含了主要信息。
成功时刻回顾
- 第一个API响应:建立了信心。
- 使用路径参数:能动态处理资源。
- 添加查询参数:学会了过滤数据。
- 处理请求体:能接收和返回复杂数据。
- 组合所有:你现在可以构建功能丰富的API了!
总结
通过这个教程,你学会了在FastAPI中如何组合使用路径参数、查询参数和请求体。FastAPI自动处理类型转换和验证,让你专注于逻辑。继续实践,尝试创建更多端点,比如删除用户或获取列表。
记住,Web开发并不可怕,FastAPI让你轻松上手!