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

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

DDD
发布: 2024-11-10 14:05:03
原创
447 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板