将 JSON 数据从 JavaScript 发布到 FastAPI 时的错误处理
要将数据从 JavaScript 前端发送到 FastAPI 后端,您必须确保数据以正确的格式传递到适当的端点。如果遇到 422 Unprocessable Entity 错误,很可能是由于数据格式不正确造成的。
默认情况下,FastAPI 将未包含在路径中的函数参数解释为 查询参数。但是,对于 JSON 数据,您需要使用以下方法之一显式指定它:
定义一个 Pydantic 模型来表示 JSON 数据结构:
from pydantic import BaseModel class Item(BaseModel): eth_addr: str @app.post('/ethAddress') def add_eth_addr(item: Item): return item
使用Body类型指定应从请求正文中解析参数:
from fastapi import Body @app.post('/ethAddress') def add_eth_addr(eth_addr: str = Body()): return {'eth_addr': eth_addr}
对于单个 body 参数,您可以使用 embed=True 参数自动解析请求正文中的数据:
from fastapi import Body @app.post('/ethAddress') def add_eth_addr(eth_addr: str = Body(embed=True)): return {'eth_addr': eth_addr}
在 JavaScript 中使用 Fetch API 发送 JSON 数据时,必须将 Content-Type header 设置为 application/json 并在 body 字段中指定数据:
fetch("http://localhost:8000/ethAddress", { method: "POST", headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' }, body: JSON.stringify({ "eth_addr": "some address" }), });
有关更多信息和详细示例,请参阅以下文档和资源:
以上是从 JavaScript 发送 JSON 数据到 FastAPI 时如何处理错误?的详细内容。更多信息请关注PHP中文网其他相关文章!