前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【FastAPI】请求体(二)

【FastAPI】请求体(二)

作者头像
云帆沧海
发布2024-01-17 17:30:59
1150
发布2024-01-17 17:30:59
举报
文章被收录于专栏:编程杂记编程杂记

混合使用 Path、Query 和请求体参数

混合使用 Path、Query 和请求体参数是相当简单的,FastAPI提供了直观的方式来定义和处理这些参数。以下是一个简单的例子,演示了如何在 FastAPI 中混合使用这三种类型的参数: from fastapi import FastAPI, Path, Query, Body

代码语言:javascript
复制
app = FastAPI()

class UserInfo:
    def __init__(self, name: str, age: int):
        self.name = name
        self.age = age

@app.put("/update_user/{user_id}")
async def update_user(
    user_id: int = Path(..., title="The ID of the user", ge=1),
    status: str = Query(..., title="The status of the user", description="Set the status of the user"),
    user_info: UserInfo = Body(..., title="User information", description="The new information for the user")
):
    # Your update logic here
    return {"user_id": user_id, "status": status, "user_info": user_info.__dict__}

user_id 是 Path 参数,它必须是正整数。 status 是 Query 参数,它是一个字符串,不能为空。 user_info 是请求体参数,它是一个自定义的类 UserInfo 的实例,包含了用户的新名称和年龄。 FastAPI 会根据这些参数的类型和注解,自动进行验证和转换。在实际请求中,你可以使用类似以下的请求:

代码语言:javascript
复制
PUT http://127.0.0.1:8000/update_user/42?status=active

{
  "name": "New John",
  "age": 26
}

请求体中的数据是以 JSON 格式发送的

详解Path和Query

Path 和 Query 是用于处理 HTTP 请求中的路径参数和查询参数的工具。它们提供了一种声明式的方式,使得定义和验证这些参数变得非常简单。

Path 参数

Path 用于声明路径参数,也就是 URL 中的一部分。在 FastAPI 中,你可以使用 Path 类型来指定路径参数的类型,并添加其他的验证条件。

代码语言:javascript
复制
from fastapi import FastAPI, Path

app = FastAPI()

@app.get("/items/{item_id}")
async def read_item(item_id: int = Path(..., title="The ID of the item", ge=1)):
    return {"item_id": item_id}

item_id 是路径参数,Path(…, title=“The ID of the item”, ge=1) 表示它是一个必须为正整数的路径参数。… 表示这个参数是必需的。

Query 参数

Query 用于声明查询参数,也就是 URL 中通过 ? 传递的参数。与 Path 类似,你可以使用 Query 类型来指定查询参数的类型,并添加其他的验证条件。

代码语言:javascript
复制
from fastapi import FastAPI, Query

app = FastAPI()

@app.get("/items/")
async def read_item(skip: int = Query(0, title="Skip items", ge=0), limit: int = Query(10, title="Limit items", le=100)):
    return {"skip": skip, "limit": limit}

在这个例子中,skip 和 limit 是查询参数,它们都有默认值,并且通过 Query(0, title=“Skip items”, ge=0) 和 Query(10, title=“Limit items”, le=100) 进行了验证。ge 表示大于等于,le 表示小于等于。

总之

Path 参数 是通过 URL 路径传递的参数,使用 Path 类型进行声明。 Query 参数 是通过 URL 查询字符串传递的参数,使用 Query 类型进行声明。 通过使用这些声明式的方式,FastAPI 不仅可以进行参数的类型转换,还能自动进行验证和文档生成。 在 FastAPI 中,这些声明式的参数处理方式不仅简化了代码,还提供了更好的类型提示和验证机制,使得 API 的开发更加方便和可靠。

我的博客即将同步至腾讯云开发者社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=3ipthahvucqok

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2024-01-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 混合使用 Path、Query 和请求体参数
  • 详解Path和Query
  • Path 参数
  • Query 参数
  • 总之
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档