Ich erstelle eine API aus einer mongodb-Datenbank mit Flask und habe den folgenden Code:
%Vor%Was beim Aufruf mit dem CSCI-Major zurückkommt:
[{"Kurs": "CSCI052", "description": "Grundlagen der Informatik. Eine solide Grundlage in der funktionalen Programmierung, Verfahrens- und Datenabstraktion, Rekursion und Problemlösung. Anwendungen in Schlüsselbereichen der Informatik, einschließlich Algorithmen und Komplexität, Computerarchitektur und -organisation, Programmiersprachen, endliche Automaten und Berechenbarkeit.Dieser Kurs dient der gleichen Rolle wie HM 60 als Voraussetzung für Informatik-Kurse der oberen Klasse an einem der Claremont Colleges. Voraussetzung: 51. "," Lehrer ":" Bull, Everett L. ,, Jr. "," Name ":" Grundlagen der Informatik "," Nummer ": 52," Schule ":" PO "}]
Wie gebe ich dieses Wörterbuch zurück, so dass sich jeder Schlüssel und Wert in einer eigenen Zeile befindet?
Flask bietet jsonify()
als Komfort:
Dies wird die Kwargs von jsonify
als eine schön formatierte JSON-Antwort zurückgeben und im Gegensatz zu Ihrem Code das richtige Content-Type
header: application/json
.
Beachten Sie jedoch, was die Dokumente dazu sagen:
Die Antwort dieser Funktion wird ziemlich gedruckt, wenn sie nicht mit
X-Requested-With: XMLHttpRequest
angefordert wurde, um das Debugging zu vereinfachen, es sei denn, der Konfigurationsparameter JSONIFY_PRETTYPRINT_REGULAR ist auf false gesetzt.
Dies bedeutet, dass Ajax-Antworten immer nicht-prettyprinted JSON erhalten (da die Same Origin-Richtlinie es unmöglich macht, X-Requested-With
zu deaktivieren). Aber ich denke, das wird kein großes Problem sein, da JSON für JS-Verbrauch nicht formatiert werden muss (das sind nur zusätzliche Daten, die über die Leitung gesendet werden).
Wenn Sie json.dumps()
(nicht-hübsch gedruckt) weiterhin verwenden möchten, können Sie den richtigen MIME-Typ senden, indem Sie ein flask.Response
sollten Sie jedoch die Auswirkungen auf die Sicherheit dieses :
Für mehr über den Unterschied:
Wenn Sie aus irgendeinem Grund flask.jsonify
(z. B. einen benutzerdefinierten Encoder hinzufügen) übersteuern müssen, können Sie dies mit der folgenden Methode tun, die den erwähnten Sicherheitsfix @phpmycoder implementiert:
Antwort:
%Vor%Siehe meine andere Antwort für ein Beispiel mit einem benutzerdefinierten json-Encoder
Tags und Links python json mongodb flask formatting