首页 >后端开发 >Python教程 >从 JavaScript 发送 JSON 数据到 FastAPI 时如何处理错误?

从 JavaScript 发送 JSON 数据到 FastAPI 时如何处理错误?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-13 16:53:03936浏览

How to Handle Errors When Sending JSON Data from JavaScript to FastAPI?

将 JSON 数据从 JavaScript 发布到 FastAPI 时的错误处理

要将数据从 JavaScript 前端发送到 FastAPI 后端,您必须确保数据以正确的格式传递到适当的端点。如果遇到 422 Unprocessable Entity 错误,很可能是由于数据格式不正确造成的。

查询参数与 JSON 参数

默认情况下,FastAPI 将未包含在路径中的函数参数解释为 查询参数。但是,对于 JSON 数据,您需要使用以下方法之一显式指定它:

1. Pydantic 模型:

定义一个 Pydantic 模型来表示 JSON 数据结构:

from pydantic import BaseModel

class Item(BaseModel):
    eth_addr: str

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

2. Body Type:

使用Body类型指定应从请求正文中解析参数:

from fastapi import Body

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

3. Body Embed:

对于单个 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

在 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"
  }),
});

其他资源

有关更多信息和详细示例,请参阅以下文档和资源:

  • [FastAPI JSON 请求和响应](https://fastapi.tiangolo.com/tutorial/body/)
  • [在 JavaScript 中使用 POST 请求发送 JSON 数据](https://stackoverflow.com/questions/44832885/sending-json-data-with-post-requests-in-javascript)
  • [使用 Fetch API 在 JavaScript 中发送包含 JSON 内容的请求](https://stackoverflow.com/questions/55749929/post-request-with-json-content-in-javascript-using-fetch-api)

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

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