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?

1voto

Auch wenn alle Antworten, die ich hier finde, richtig sind. Es gibt etwas, das ich für eine bessere Praxis halte. Hier ist, wie ich es schreiben würde.

von Flasche importieren App, Anforderung, Flasche, jsonify

@app.route('/api/add_message/', Methoden=['GET', 'POST'])
def add_message(uuid):

    # Überprüfen, ob die Anforderungsmethode POST ist
    if Anforderungsmethode == 'POST':
        # Inhalt gibt entweder analysierte Daten als JSON zurück
        # Oder None, falls keine Daten vorhanden sind
        inhalt = request.get_json()
        print(inhalt)
        # Der Inhalt könnte auf der HTML-Seite angezeigt werden, wenn er als JSON serialisiert ist
        return jsonify(inhalt) # Gibt null zurück, wenn Inhalt vorhanden ist

    # Wenn es nur eine GET-Anforderung ist, dann gibt einfach uuid zurück
    return uuid

0voto

Ganesan J Punkte 194
{
  "uuid":1212121212,
  "text":"lalala",
  "comment":"",
  "signed_on":"2022-11-07 00:03:00"
}

Sie können die obigen Daten als JSON senden und sie in einer Flask-Anwendung mit request.json erhalten

from flask import request, Blueprint,flash,json

@app.route('/api/add_message/', methods = ["GET", "POST"])
def testing(uuid):
    sync_data = request.json    
    josn_data = json.dumps(sync_data ,default =str)
    return josn_data

-1voto

Codemaker Punkte 7272

Versuchen Sie, das force-Attribut als True in der get_json()-Methode zu setzen, um dieses Problem zu lösen.

request.get_json(force = True)

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