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

【FastAPI】请求体

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

在 FastAPI 中,请求体(Request Body)是通过请求发送的数据,通常用于传递客户端提交的信息。FastAPI 使得处理请求体变得非常容易。

请求体是客户端发送给 API 的数据。响应体是 API 发送给客户端的数据

注:不能使用 GET 操作(HTTP 方法)发送请求体。 要发送数据,你必须使用下列方法之一:POST(较常见)、PUT、DELETE 或 PATCH。

具体代码例如:

代码语言:javascript
复制
from typing import Union

from fastapi import FastAPI
from pydantic import BaseModel


class Item(BaseModel):
    name: str
    description: Union[str, None] = None
    price: float
    tax: Union[float, None] = None


app = FastAPI()


@app.post("/items/")
async def create_item(item: Item):
    return item

运行结果用文档测试得:

在这里插入图片描述
在这里插入图片描述

仅使用了 Python 类型声明,FastAPI 将会: 将请求体作为 JSON 读取。 转换为相应的类型(在需要时)。 校验数据。 如果数据无效,将返回一条清晰易读的错误信息,指出不正确数据的确切位置和内容。 将接收的数据赋值到参数 item 中。 由于你已经在函数中将它声明为 Item 类型,你还将获得对于所有属性及其类型的一切编辑器支持(代码补全等)。 为你的模型生成 JSON 模式 定义,你还可以在其他任何对你的项目有意义的地方使用它们。 这些模式将成为生成的 OpenAPI 模式的一部分,并且被自动化文档 UI 所使用。

请求体 + 路径参数 + 查询参数

同时声明请求体、路径参数和查询参数。

代码语言:javascript
复制
FastAPI 会识别它们中的每一个,并从正确的位置获取数据。
from typing import Union

from fastapi import FastAPI
from pydantic import BaseModel


class Item(BaseModel):
    name: str
    description: Union[str, None] = None
    price: float
    tax: Union[float, None] = None


app = FastAPI()


@app.put("/items/{item_id}")
async def update_item(item_id: int, item: Item, q: Union[str, None] = None):
    result = {"item_id": item_id, **item.dict()}
    if q:
        result.update({"q": q})
    return result

item_id 就是路径参数 Item 是请求体 q 就是查询参数

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 请求体 + 路径参数 + 查询参数
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档