Maison >développement back-end >Tutoriel Python >Comment gérer les erreurs lors de l'envoi de données JSON de JavaScript vers FastAPI ?

Comment gérer les erreurs lors de l'envoi de données JSON de JavaScript vers FastAPI ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-13 16:53:03901parcourir

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

Gestion des erreurs lors de la publication de données JSON de JavaScript vers FastAPI

Pour envoyer des données d'une interface JavaScript vers un backend FastAPI, vous devez vous assurer que les données sont transmises dans le format correct et au point de terminaison approprié. Si vous rencontrez une erreur 422 Unprocessable Entity, cela est probablement dû à un formatage de données incorrect.

Paramètres de requête par rapport aux paramètres JSON

Par défaut, FastAPI interprète les paramètres de fonction non inclus dans le chemin comme paramètres de requête. Cependant, pour les données JSON, vous devez les spécifier explicitement en utilisant l'une des méthodes suivantes :

1. Modèle Pydantic :

Définir un modèle Pydantic pour représenter la structure de données JSON :

from pydantic import BaseModel

class Item(BaseModel):
    eth_addr: str

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

2. Type de corps :

Utilisez le type Body pour spécifier que le paramètre doit être analysé à partir du corps de la requête :

from fastapi import Body

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

3. Body Embed :

Pour un seul paramètre de corps, vous pouvez utiliser l'argument embed=True pour analyser automatiquement les données du corps de la requête :

from fastapi import Body

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

API JavaScript Fetch

Lorsque vous utilisez l'API Fetch en JavaScript pour envoyer des données JSON, vous devez définir l'en-tête Content-Type sur application/json et spécifier les données dans le corps field :

fetch("http://localhost:8000/ethAddress", {
  method: "POST",
  headers: {
    'Accept': 'application/json',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    "eth_addr": "some address"
  }),
});

Ressources supplémentaires

Pour plus d'informations et des exemples détaillés, reportez-vous à la documentation et aux ressources suivantes :

  • [FastAPI JSON Request and Response] (https://fastapi.tiangolo.com/tutorial/body/)
  • [Envoi de données JSON avec des requêtes POST dans JavaScript](https://stackoverflow.com/questions/44832885/sending-json-data-with-post-requests-in-javascript)
  • [Requête POST avec contenu JSON en JavaScript à l'aide de Fetch API](https://stackoverflow.com/questions/55749929/post-request-with-json-content-in-javascript-using-fetch-api)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn