2017-12-01 21 views
0

私はAxiosとFlaskを使ってRESTful APIを開発しています。request.jsonは文字列を返します

しかし、AxiosとFlaskの間のJSONデータに問題があります。

AxiosからJSONデータをrequest.jsonで取得できません。

私は多くの方法を試していますが、何も機能しません。

主に、request.jsonNoneを取得する、とrequest.dataが得られます:デバッグ後

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' 

request.jsonを今データを取得することができます。

jsonではなく、stringしか得られません。

Axios

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

フラスコ

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

結果

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

私はそれをどのように修正すればよい:ここで

は、コードのですか? ありがとうございます。

+0

'get_json()'は機能しますか? –

+0

いいえ、request.jsonと同じ – scaldstack

+0

JSONの代わりにフォームデータを送信したようです。 –

答えて

0

代わりにget_json()を使用します。フラスコの文書hereによれば、jsonではなく、get_json()を使用しています。

+0

それはあまりにも機能しませんでした... – scaldstack

0

Axiosのように見えますが、何とかあなたのjsonを文字列として送信しています。
回避策として、フラスコ側から文字列化されたjsonを辞書に変換することができます。

import json 

@app.route('/api/user', methods=['POST']) 
def user(): 
    j = json.loads(request.json) 
関連する問題