2017-06-25 3 views
0

Ich versuche, durch POST-Request Werte aus einer JSON Nutzlast zu extrahieren:Python-Kolben Werte aus einer POST-Anfrage Extrahieren API REST

Frage 1: Was ist ein besserer Weg, um die Daten zu bekommen?

Erster Weg?

@app.route('/login', methods=['POST']) 
def login(): 
    if request.method == 'POST': 
     test = request.data 
     return test 

oder Second Way?

@app.route('/login', methods=['POST']) 
def login(): 
    if request.method == 'POST': 
     test = json.loads(request.json) 
     return test 

Frage 2: Wie kann ich einen bestimmten Wert zu bekommen?

die json Nutzlast gegeben:

{ "test": "hello world" } 

Ich versuchte unten tun Code, funktioniert aber nicht.

#way1 
return request.data["test"] 

#error message: TypeError: string indices must be integers, not str 

#way2 
test["test"] 

#error message: TypeError: expected string or buffer 
+0

"funktioniert nicht" uns nicht viel sagen. _wie funktioniert es nicht? Haben Sie ein falsches Ergebnis? Kein Ergebnis? Eine Fehlermeldung? –

+0

versuche 'test = request.get_json (force = True)' – abigperson

+0

@PJSantoro Also ich würde es tun, aber ich wähle wie ich einen bestimmten Wert mit dem json {"test:" test "} sagen wir sagen, ich möchte Erhalten Sie den Wert von test –

Antwort

0

Wenn Sie JSON in einen Kolben Endpunkt Mitteilung verfassen, sollten Sie verwenden:

request.get_json()

Eine sehr wichtige API Anmerkung:

By default this function will return None if the mimetype is not application/json but this can be overridden by the force parameter

Bedeutung ... entweder sicherstellen, dass die Mimetype der POST ist Anwendung/JSONOR sicher sein, die force Option true

Ein gutes Design dieses hinter setzen würde setzen:

request.is_json wie folgt aus:

@app.route('/post/', methods=['POST']) 
def post(): 
    if request.is_json: 
     data = request.get_json() 
     return jsonify(data) 
    else: 
     return jsonify(status="Request was not JSON") 
+0

also wie extrahiere ich einen bestimmten Wert (Frage 2) –

+0

JSON ist eine Kombination von verschachtelten Python-Dicts & Listen , so würde 'data [" test "]' Ihnen den Testschlüssel geben, wenn der Haupt-JSON, der an den Endpunkt übergeben wurde, einen Testschlüssel hat. – abigperson

Verwandte Themen