首页 > 解决方案 > 快速 API 帖子无法识别我的参数

问题描述

我通常使用 Tornado,并尝试迁移到 Fast API。

让我们说一下非常基本的以下 API

@app.post("/add_data")
async def add_data(data):
    return data

当我运行以下 Curl 请求时: curl http://127.0.0.1:8000/add_data -d 'data=Hello'

我收到以下错误:

{"detail":[{"loc":["query","data"],"msg":"field required","type":"value_error.missing"}]}

所以我确信我错过了一些非常基本的东西,但我看不到什么。

标签: pythonfastapi

解决方案


由于您要发送字符串数据,因此您必须在路由器函数中指定它,并键入as

from pydantic import BaseModel


class Payload(BaseModel):
    data: str = ""


@app.post("/add_data")
async def add_data(payload: Payload = None):
    return payload

示例 cURL 请求将采用以下形式,

curl -X POST "http://0.0.0.0:6022/add_data"  -d '{"data":"Hello"}'

推荐阅读