Maison >développement back-end >Tutoriel Python >Comment envoyer des données JSON d'un front-end JavaScript vers un back-end FastAPI ?

Comment envoyer des données JSON d'un front-end JavaScript vers un back-end FastAPI ?

DDD
DDDoriginal
2024-11-10 14:05:03451parcourir

How to Send JSON Data from a JavaScript Front-End to a FastAPI Back-End?

Envoi de données JSON du Front-End JavaScript vers le Back-End FastAPI

Dans FastAPI, les paramètres déclarés dans une fonction sans faire partie des paramètres de chemin sont automatiquement interprétés comme une requête paramètres. Cette interprétation diffère de la pratique courante consistant à transmettre des données JSON dans un corps de requête.

Pour résoudre cet écart, il existe plusieurs options :

Utiliser le modèle Pydantic

Créer un modèle Pydantic modèle pour définir le corps JSON attendu :

from pydantic import BaseModel

class Item(BaseModel):
    eth_addr: str

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

API JavaScript Fetch :

headers: {
  Accept: "application/json",
  "Content-Type": "application/json",
},
body: JSON.stringify({ eth_addr: "some addr" }),

Utilisation du paramètre Body

Utilisez Body= avec un type :

from fastapi import Body

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

API JavaScript Fetch :

headers: {
  Accept: "application/json",
  "Content-Type": "application/json",
},
body: JSON.stringify("some addr"),

Utilisation du paramètre d'intégration du corps

Simplifiez les paramètres de corps uniquement à l'aide de embed=True :

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

API JavaScript Fetch :

headers: {
  Accept: "application/json",
  "Content-Type": "application/json",
},
body: JSON.stringify({ eth_addr: "some addr" }),

Pour plus de détails et des exemples avec JavaScript, reportez-vous à :

  • 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

N'oubliez pas que l'utilisation de paramètres de requête n'est pas l'approche typique pour les données de corps JSON dans les API Web. Ajustez votre code en conséquence pour correspondre à ces options.

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