FastAPI/Pydantic 接受任意发布请求正文?

Posted

技术标签:

【中文标题】FastAPI/Pydantic 接受任意发布请求正文?【英文标题】:FastAPI/Pydantic accept arbitrary post request body? 【发布时间】:2020-09-27 17:26:37 【问题描述】:

我想创建一个 FastAPI 端点,它只接受任意的 post 请求正文并返回它。

如果我发送 "foo" : "bar" ,我想找回 "foo" : "bar" 。但我也希望能够发送"foo1" : "bar1", "foo2" : "bar2" 并取回。

我试过了:

from fastapi import FastAPI
app = FastAPI()

app.post("/")
async def handle(request: BaseModel):
    return request

但无论我发送什么,它都会返回一个空字典。

有什么想法吗?

【问题讨论】:

【参考方案1】:

你可以使用类型提示 Dict[Any, Any] 告诉 FastAPI 你期待任何有效的 JSON:

from typing import Any, Dict
from fastapi import FastAPI

app = FastAPI()

@app.post("/")
async def handle(request: Dict[Any, Any]):
    return request

【讨论】:

以上是关于FastAPI/Pydantic 接受任意发布请求正文?的主要内容,如果未能解决你的问题,请参考以下文章

接受任意类型的回调

一种接受任意距离函数的聚类算法

你能写一个可以接受任意数量参数的 c# 装饰器函数吗?

Elasticsearch es coordinating 节点

Basic Paxos学习笔记

Python 构造一个可接受任意数量参数的函数