fastapi接受post参数的方式有哪些?

1. 安装 FastAPI 和 Uvicorn

首先,确保你已经安装了 FastAPI 和 Uvicorn。可以使用以下命令进行安装:

复制代码
bash
pip install fastapi uvicorn

2. 创建 Pydantic 模型

Pydantic 模型用于定义请求体的结构和数据验证。下面是一个示例模型,表示一个商品(Item):

python 复制代码
python
from pydantic import BaseModel

class Item(BaseModel):
    name: str
    description: str = None
    price: float
    tax: float = None

在这个模型中,name 和 price 是必填字段,而 description 和 tax 是可选字段。

3. 创建 FastAPI 应用并定义 POST 路由

接下来,创建一个 FastAPI 应用,并定义一个处理 POST 请求的路由:

python 复制代码
python
from fastapi import FastAPI

app = FastAPI()

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

在这个例子中,当向 /items/ 发送 POST 请求时,FastAPI 会自动解析请求体中的 JSON 数据,并将其转换为 Item 对象。如果请求体不符合模型的要求,FastAPI 会返回一个错误响应。

4. 启动应用

使用 Uvicorn 启动应用:

css 复制代码
bash
uvicorn main:app --reload

这里假设你的代码保存在 main.py 文件中。

5. 测试 POST 请求

你可以使用工具如 Postman 或 curl 来测试这个 POST 接口。以下是一个使用 curl 的示例:

json 复制代码
bash
curl -X POST "http://127.0.0.1:8000/items/" -H "Content-Type: application/json" -d '{"name": "Sample Item", "price": 10.5}'

如果请求成功,你将收到如下响应:

json 复制代码
json
{
    "name": "Sample Item",
    "description": null,
    "price": 10.5,
    "tax": null
}

6. 使用多个参数(可选)

虽然请求只能有一个主体,但你可以通过组合路径参数、查询参数和请求体来处理更多信息。例如:

python 复制代码
python
@app.post("/users/{user_id}/items/")
async def create_item_for_user(user_id: int, item: Item):
    return {"user_id": user_id, "item": item}

在这个例子中,除了请求体中的 item 外,还可以通过路径参数 user_id 来获取用户 ID。

总结

通过以上步骤,你可以轻松地在 FastAPI 中处理 POST 请求的参数。利用 Pydantic 模型,你能够确保传入数据的有效性,并自动生成 API 文档。这使得构建和维护 API 更加高效和可靠。

相关推荐
打工仔折腾 AI1 分钟前
网易UU远程实测:手机控电脑做Python开发和Agent调试的真实体验
人工智能·后端·python·智能手机·性能优化·电脑·ai agent 实战
轩轶子6 分钟前
Python CLI Todo:一次数据结构错误引发的 Bug
数据结构·python·bug
“AI国潮设计-小江”9 分钟前
【AIGC实战】Python+SDXL打造潮汕国潮IP:英歌舞麻将的自动化生成与商用思路
开发语言·人工智能·python·prompt·aigc
zh路西法12 分钟前
【上手一只MicroDuck】:(一)从机器人结构到强化学习训练框架
python·强化学习·huggingface·ppo·mujoco·microduck
YYYing.13 分钟前
【设计模式系列 (四) 】建造者模式
c++·后端·设计模式·建造者模式·c/c++
天远API13 分钟前
零信任架构实战:基于天远全网运营商三要素构建自动化骑手准入网关
运维·人工智能·架构·自动化
nvd1135 分钟前
Flink 极简入门与零常驻批处理架构实战:从双模式辨析到 GitOps 通用模具治理
大数据·架构·flink
IT_陈寒37 分钟前
用Vue时这个响应式陷阱坑了我一整天
前端·人工智能·后端
alphaTao38 分钟前
LeetCode 每日一题 2026/9/21-2026/9/27
python·算法·leetcode
孙启超1 小时前
【AI开发之Rust】第 20 课:壳侧 API 封装 —— 把 Rust 能力接进真实 UI
开发语言·后端·rust