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 :
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" }),
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"),
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 à :
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!