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

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

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

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/)
  • [通过 POST 请求发送 JSON 数据在 JavaScript 中](https://stackoverflow.com/questions/44832885/sending-json-data-with-post-requests-in-javascript)
  • [使用 Fetch 在 JavaScript 中发送包含 JSON 内容的请求API](https://stackoverflow.com/questions/55749929/post-request-with-json-content-in-javascript-using-fetch-api)

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

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