Fast API post 无法识别我的参数
Fast API post does not recgonize my parameter
我通常使用 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"}]}
所以我确信我遗漏了一些非常基本的东西,但我没有看到什么。
由于您要发送 字符串数据 ,您必须在路由器函数中使用 键入 作为
from pydantic import BaseModel
<b>class Payload(BaseModel):
data: str = ""</b>
@app.post("/add_data")
async def add_data(<b>payload: Payload = None</b>):
return payload
示例 cURL 请求将采用以下形式,
curl -X POST "http://0.0.0.0:6022/add_data" <b>-d '{"data":"Hello"}'</b>
在您的例子中,您将表单数据传递到端点。要处理它,您需要通过 pip 安装 python-multipart 并稍微重写您的函数:
from fastapi import FastAPI, Form
app = FastAPI()
@app.post('/add_data')
async def process_message(data: str = Form(...)):
return data
如果您需要 json 数据,请查看 Arakkal Abu 的回答。
我通常使用 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"}]}
所以我确信我遗漏了一些非常基本的东西,但我没有看到什么。
由于您要发送 字符串数据 ,您必须在路由器函数中使用 键入 作为
from pydantic import BaseModel
<b>class Payload(BaseModel):
data: str = ""</b>
@app.post("/add_data")
async def add_data(<b>payload: Payload = None</b>):
return payload
示例 cURL 请求将采用以下形式,
curl -X POST "http://0.0.0.0:6022/add_data" <b>-d '{"data":"Hello"}'</b>
在您的例子中,您将表单数据传递到端点。要处理它,您需要通过 pip 安装 python-multipart 并稍微重写您的函数:
from fastapi import FastAPI, Form
app = FastAPI()
@app.post('/add_data')
async def process_message(data: str = Form(...)):
return data
如果您需要 json 数据,请查看 Arakkal Abu 的回答。