Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich JSON-formatierte Daten effizient in einer FastAPI-Anwendung zurückgeben?

Wie kann ich JSON-formatierte Daten effizient in einer FastAPI-Anwendung zurückgeben?

Barbara Streisand
Barbara StreisandOriginal
2024-11-28 22:22:11792Durchsuche

How Can I Efficiently Return JSON-Formatted Data in a FastAPI Application?

JSON-formatierte Daten mit FastAPI zurückgeben

Bei der Entwicklung einer FastAPI-Anwendung ist es wichtig, die Nuancen der Rückgabe von JSON-formatierten Daten zu verstehen. Dazu müssen Sie sich mit den inneren Abläufen von FastAPI befassen und die Rolle verstehen, die die JSON-Serialisierung spielt.

Das Dilemma mit der JSON-Serialisierung

Der Kern des Problems liegt in der Verwendung von json.dumps() um Objekte vor der Rückgabe zu serialisieren. Obwohl dieser Ansatz logisch erscheinen mag, führt er zu einer redundanten Serialisierung, da FastAPI den Rückgabewert während der Antwortgenerierung automatisch JSON-codiert. Dies führt zu einer scheinbar falschen Zeichenfolgendarstellung der JSON-Daten und nicht zu einem sauber formatierten Diktat.

Die Lösung

Um dies zu beheben, müssen Sie FastAPI erlauben, den JSON-Serialisierungsprozess zu verarbeiten. Dies kann durch die direkte Rückgabe von Datenobjekten (Dicts, Listen usw.) erreicht werden. FastAPI konvertiert sie mithilfe des jsonable_encoder nahtlos in JSON-kompatible Daten und verpackt sie in eine JSONResponse. Die resultierende Antwort enthält anwendungs-/json-codierte Daten und stellt so das gewünschte JSON-Format sicher.

Implementierungsoptionen

Option 1: Rückgabewerte verwenden

Datenobjekte wie erwartet zurückgeben :

@app.get('/')
async def main():
    return d

Hinter den Kulissen serialisiert FastAPI das Diktat (d) mithilfe von JSONResponse und Codieren Sie es mit json.dumps().

Option 2: Benutzerdefinierte Antwortobjekte

Wenn Sie eine präzise Kontrolle über die Antwort benötigen, verwenden Sie das Antwortobjekt direkt:

@app.get('/')
async def main():
    return Response(content=json.dumps(d, indent=4, default=str), media_type='application/json')

Dieser Ansatz gewährt Ihnen Freiheit hinsichtlich des Medientyps (z. B. „application/json“) Anpassbarkeit.

Hinweis: Das Standardargument für json.dumps() (str) ermöglicht die Serialisierung von Datetime-Objekten. Durch die Übergabe eines Einzugs können Sie die Formatierung der JSON-Ausgabe steuern.

Das obige ist der detaillierte Inhalt vonWie kann ich JSON-formatierte Daten effizient in einer FastAPI-Anwendung zurückgeben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn