2017-12-01 2 views
0

Ich benutze Axios und Flask um RESTful API zu entwickeln.request.json gibt nur String zurück

Es gibt jedoch ein Problem mit JSON-Daten zwischen Axios und Flask.

Ich kann keine JSON-Daten von Axios von request.json erhalten.

Ich versuche viele Möglichkeiten, aber nichts funktioniert.

Meistens werden request.jsonNone bekommen, und request.data erhalten:

b'------WebKitFormBoundaryNzW4jnyUkdEH3jsX\r\nContent-Disposition: form-data; name="user"\r\n\r\nu\r\n------WebKitFormBoundaryNzW4jnyUkdEH3jsX\r\nContent-Disposition: form-data; name="pwd"\r\n\r\np\r\n------WebKitFormBoundaryNzW4jnyUkdEH3jsX--\r\n' 

Nach Debuggen request.json können nun die Daten erhalten.

Aber es kann nur string, nicht json bekommen. Hier

ist der Code:

Axios

var config = {headers: {'Content-Type': 'application/json'}} 
axios.post('/api/user', {user: 'user', pwd: 'pwd'}, config) 
.then(function(resp) { 
    // ... 
}) 
.catch(function(error) { 
    // ... 
}); 

Flask

@app.route('/api/user', methods=['POST']) 
def user(): 
    j = request.json 
    print(j) 
    print(type(j)) 

Ergebnis

{"user": "user", "pwd": "pwd"} 
class 'str' 

Wie kann ich das Problem beheben? Danke.

+0

Funktioniert 'get_json()'? –

+0

Nein, wie bei request.json – scaldstack

+0

Sieht so aus, als hätten Sie anstelle von JSON Formulardaten gesendet. –

Antwort

0

Sie möchten stattdessen get_json() verwenden. Laut Flaschendokument here heißt es, nicht json sondern get_json() zu verwenden.

+0

Es hat auch nicht funktioniert ... – scaldstack

0

Scheint wie von Axios Sie irgendwie senden Ihre JSON als Zeichenfolge.
Als Workaround können Sie den stringifizierten JSON von der Flaschenseite in ein Wörterbuch umwandeln.

import json 

@app.route('/api/user', methods=['POST']) 
def user(): 
    j = json.loads(request.json) 
Verwandte Themen