Lors du développement d'une application FastAPI, il est essentiel de comprendre les nuances du renvoi de données au format JSON. Cela nécessite de se plonger dans le fonctionnement interne de FastAPI et de comprendre le rôle joué par la sérialisation JSON.
Au cœur du problème se trouve l'utilisation de json.dumps() pour sérialiser les objets avant de les renvoyer. Bien que cette approche puisse sembler logique, elle introduit une sérialisation redondante puisque FastAPI code automatiquement en JSON la valeur de retour lors de la génération de la réponse. Cela conduit à une représentation sous forme de chaîne apparemment incorrecte des données JSON plutôt qu'à un dict soigneusement formaté.
Pour remédier à cela, vous devez autoriser FastAPI à gérer le processus de sérialisation JSON. Ceci peut être réalisé en renvoyant directement des objets de données (dictés, listes, etc.). FastAPI les convertira de manière transparente en données compatibles JSON à l'aide de jsonable_encoder et les enveloppera dans une JSONResponse. La réponse résultante contiendra des données codées application/json, garantissant le format JSON souhaité.
Renvoyer les objets de données comme prévu :
@app.get('/') async def main(): return d
En coulisses, FastAPI sérialisera le dict (d) à l'aide de JSONResponse et encodez-le avec json.dumps().
Si vous avez besoin d'un contrôle précis sur la réponse, utilisez directement l'objet Response :
@app.get('/') async def main(): return Response(content=json.dumps(d, indent=4, default=str), media_type='application/json')
Cette approche vous accorde la liberté sur le type de média (par exemple, « application/json »), fournissant personnalisation.
Remarque : L'argument par défaut de json.dumps() (str) permet la sérialisation des objets datetime. En passant un retrait, vous pouvez contrôler le formatage de la sortie JSON.
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!