ホームページ >バックエンド開発 >Python チュートリアル >JSON データを JavaScript から FastAPI に送信する際のエラーを処理する方法は?

JSON データを JavaScript から FastAPI に送信する際のエラーを処理する方法は?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-13 16:53:03939ブラウズ

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

JavaScript から FastAPI に JSON データを送信する際のエラー処理

JavaScript フロントエンドから FastAPI バックエンドにデータを送信するには、データは正しい形式で適切なエンドポイントに渡されます。 422 Unprocessable Entity エラーが発生した場合は、データ形式が正しくないことが原因である可能性があります。

クエリ パラメータと JSON パラメータ

デフォルトでは、FastAPI はパスに含まれていない関数パラメータを クエリパラメータ。ただし、JSON データの場合は、次のいずれかの方法を使用して明示的に指定する必要があります。

1. Pydantic モデル:

JSON データ構造を表す Pydantic モデルを定義します:

from pydantic import BaseModel

class Item(BaseModel):
    eth_addr: str

@app.post('/ethAddress')
def add_eth_addr(item: Item):
    return item
2.ボディ タイプ:

ボディ タイプを使用して、リクエスト本文からパラメータを解析する必要があることを指定します:

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 ヘッダーを application/json に設定し、本文フィールドにデータを指定する必要があります:

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 コンテンツを含む POST リクエスト](https://stackoverflow.com/questions/55749929/post-request-with-json-content-in-javascript-using-fetch-api)

以上がJSON データを JavaScript から FastAPI に送信する際のエラーを処理する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。