Ich kann nicht herausfinden, wie ich den MIME-Typ application/json
Für eine Ansicht in Flask erzwingen kann. Hier ist eine einfache Ansicht, die ich zu Demonstrationszwecken zusammengestellt habe:
@app.route("/")
def testView():
ret = '{"data": "JSON string example"}'
return ret
Die JSON-Zeichenfolge (in der Variablen ret
enthalten) wird von einer anderen Stelle gesammelt (mit stdout von einem anderen Programm mit subprocess
), daher kann ich jsonify
wird mit Flask geliefert.
Ich habe mir die "Returning Json" Documentation und this Stackoverflow-Frage angesehen, aber ich hatte bisher noch kein Glück. Ich habe mich jetzt schon eine Weile umgesehen und werde weiter suchen, aber ich dachte, ich würde hier nachfragen, nur für den Fall, dass jemand darauf gestoßen ist.
Vielen Dank.
Siehe Antwort unten
Die Lösung:
@app.route("/")
def testView():
ret = '{"data": "JSON string example"}'
resp = Response(response=ret,
status=200,
mimetype="application/json")
return resp
Ich fand diese Website nützlich: Implementierung einer RESTful-Web-API mit Python & Flask
Wie soulseekah bemerkt, ist make_response in diesem Fall wahrscheinlich eine bessere Option. Legen Sie dann die Mimetype-Eigenschaft fest.
r = make_response( data )
r.mimetype = 'application/json'
return r
Wenn Sie Sie verwenden
from flask import jsonify
und dann in deinem Code
return jsonify(somedict)
dann setzt jsonify () den MIME-Typ automatisch auf 'application/json'
Bearbeiten:
Dies wurde früher als Risiko eingestuft, aber nicht mehr, und Flask hat auch seine Empfehlung aktualisiert: "ECMAScript 5 hat diese Sicherheitsanfälligkeit geschlossen, sodass nur extrem alte Browser verwendet werden "http://flask.pocoo.org). Alle diese Browser haben andere schwerwiegendere Sicherheitslücken, daher wurde dieses Verhalten geändert und jsonify () unterstützt jetzt das Serialisieren von Arrays." /docs/1.0/security/#json-security