首页 >后端开发 >Python教程 >如何将 JSON 数据从 JavaScript 前端发送到 FastAPI 后端?

如何将 JSON 数据从 JavaScript 前端发送到 FastAPI 后端?

DDD
DDD原创
2024-11-10 14:05:03451浏览

How to Send JSON Data from a JavaScript Front-End to a FastAPI Back-End?

将 JSON 数据从 JavaScript 前端发送到 FastAPI 后端

在 FastAPI 中,在函数中声明但不属于路径参数的参数会自动解释为查询参数。这种解释与在请求正文中传递 JSON 数据的常见做法不同。

要解决此差异,有多种选项:

使用 Pydantic 模型

创建 Pydantic模型来定义预期的 JSON 正文:

from pydantic import BaseModel

class Item(BaseModel):
    eth_addr: str

@app.post("/ethAddress")
def add_eth_addr(item: Item):
    return item

JavaScript Fetch API:

headers: {
  Accept: "application/json",
  "Content-Type": "application/json",
},
body: JSON.stringify({ eth_addr: "some addr" }),

使用 Body 参数

使用 Body= 和类型:

from fastapi import Body

@app.post("/ethAddress")
def add_eth_addr(eth_addr: str = Body()):
    return {"eth_addr": eth_addr}

JavaScript Fetch API:

headers: {
  Accept: "application/json",
  "Content-Type": "application/json",
},
body: JSON.stringify("some addr"),

使用正文嵌入参数

使用 embed=True 简化仅正文参数:

@app.post("/ethAddress")
def add_eth_addr(eth_addr: str = Body(embed=True)):
    return {"eth_addr": eth_addr}

JavaScript Fetch API :

headers: {
  Accept: "application/json",
  "Content-Type": "application/json",
},
body: JSON.stringify({ eth_addr: "some addr" }),

有关 JavaScript 的更多详细信息和示例,请参阅:

  • https://fastapi.tiangolo.com/advanced/requestBody/
  • https://fastapi.tiangolo.com/tutorial/body-forms/#formencoded-or-raw-body-few-parameters
  • https://stackoverflow.com/questions/55333220/fastapi-validation- for-payload-when-using-body

请记住,使用查询参数并不是 Web API 中 JSON 正文数据的典型方法。相应地调整您的代码以匹配这些选项。

以上是如何将 JSON 数据从 JavaScript 前端发送到 FastAPI 后端?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn