FastAPI 教程

2.5 组合使用:路径参数 + 查询参数 + 请求体

FastAPI 初学者指南:轻松掌握路径参数、查询参数与请求体组合使用

FastAPI 教程

面向Python初学者的FastAPI教程,通过生活化类比和动手实践,教你如何组合路径参数、查询参数和请求体,快速构建Web API。

推荐工具
PyCharm专业版开发必备

功能强大的Python IDE,提供智能代码补全、代码分析、调试和测试工具,提高Python开发效率。特别适合处理列表等数据结构的开发工作。

了解更多

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包含所有信息。这就是组合使用的威力!

生活化类比

  • 路径参数:就像快递单上的收货地址,必须准确无误。
  • 查询参数:就像订单备注,比如“要发票”,是可选的额外要求。
  • 请求体:就像你填写的申请表,包含了主要信息。

成功时刻回顾

  1. 第一个API响应:建立了信心。
  2. 使用路径参数:能动态处理资源。
  3. 添加查询参数:学会了过滤数据。
  4. 处理请求体:能接收和返回复杂数据。
  5. 组合所有:你现在可以构建功能丰富的API了!

总结

通过这个教程,你学会了在FastAPI中如何组合使用路径参数、查询参数和请求体。FastAPI自动处理类型转换和验证,让你专注于逻辑。继续实践,尝试创建更多端点,比如删除用户或获取列表。

记住,Web开发并不可怕,FastAPI让你轻松上手!

开发工具推荐
Python开发者工具包

包含虚拟环境管理、代码格式化、依赖管理、测试框架等Python开发全流程工具,提高开发效率。特别适合处理复杂数据结构和算法。

获取工具包