497 Stimmen

Wie man in Flask JSON erhält, das mit POST übermittelt wurde?

Ich versuche, eine einfache API mit Flask zu erstellen, in der ich jetzt etwas POSTed JSON lesen möchte. Ich mache den POST mit der Postman Chrome-Erweiterung, und das JSON, das ich POSTe, lautet einfach {"text":"lalala"}. Ich versuche, das JSON mit der folgenden Methode zu lesen:

@app.route('/api/add_message/', methods=['GET', 'POST'])
def add_message(uuid):
    content = request.json
    print content
    return uuid

Im Browser gibt es korrekt die UUID zurück, die ich im GET eingefügt habe, aber in der Konsole wird einfach None ausgegeben (wo ich erwarte, dass {"text":"lalala"} ausgegeben wird). Weiß jemand, wie ich das gepostete JSON innerhalb der Flask-Methode erhalten kann?

12voto

Dip Punkte 129

Wenn Sie force=True verwenden, wird der Inhaltstyp der Anfrage ignoriert und es wird versucht, den Body unabhängig davon als JSON zu analysieren.

request.get_json(force=True)

11voto

Soroosh Khodami Punkte 1225

Sie können beachten, dass request.json oder request.get_json() nur funktioniert, wenn der Content-Type: application/json im Header der Anfrage hinzugefügt wurde. Wenn Sie nicht in der Lage sind, die Konfiguration der Client-Anfrage zu ändern, können Sie den Body als JSON wie folgt abrufen:

data = json.loads(request.data)

5voto

Ömer Taban Punkte 130

Einen anderen Ansatz zu geben.

von Flasche importieren Flask, jsonify, Anfrage
app = Flask(__name__)

@app.route('/service', Methoden=['POST'])
def dienst():
    Daten = json.loads(request.data)
    text = data.get("text",None)
    if text is None:
        return jsonify({"Nachricht":"Text nicht gefunden"})
    else:
        return jsonify(data)

if __name__ == '__main__':
    app.run(host= '0.0.0.0',debug=True)

2voto

user8045900 Punkte 39

Die folgenden Codes können verwendet werden

@app.route('/api/add_message/', methods=['GET', 'POST'])
def add_message(uuid):
  content = request.json['text']
  print content
  return uuid

Hier ist ein Screenshot von mir, der die JSON-Daten abruft:

Bildbeschreibung hier eingeben

Sie können sehen, dass das zurückgegebene Datenobjekt ein Dictionary-Typ ist.

1voto

RAJAHMAD MULANI Punkte 129

Angenommen, Sie haben gültiges JSON gepostet,

@app.route('/api/add_message/', methods=['GET', 'POST'])
def add_message(uuid):
    content = request.json
    print content['uuid']
    # Geben Sie die Daten als JSON zurück
    return jsonify(content)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X