2017-02-28 24 views
0

Angular AJAX呼び出しを使用してFlaskバックエンドに自然言語処理を送信しています。Python FlaskはAngularJSからPOSTデータを取得しますAJAX

AJAXコード:

$scope.processText = function(){ 

    $http({ 
     method: "POST", 
     url: "http://127.0.0.1:5000/processText", 
     headers: { 
      'Access-Control-Allow-Origin': '*', 
      'Content-Type': 'application/json', 
     }, 
     data: { 
      'message': "this is my message", 
     } 
    }).then(function successCallback(response){ 
     console.log(response.data) 
     $scope.message = ""; 
    }); 
} 

私は、Object {メッセージ:「これは私のメッセージである」}を取得することができるよ残念ながら私はrequest.data.messageを入力してキーにアクセスできませんでしたよ。

フラスコルートあなたがjsonifyが自動的にContent-Typeヘッダを持っているflask.Response()オブジェクトを作成するので、オブジェクトを返すためにjsonify使用する必要が

@app.route('/processText', methods=['POST']) 

def analyzeText(): 
    if request.method == "POST": 

     data = json.loads(request.data) 
     return data   #error : "dict is not callable" 
     return data.message #error : "'bytes' object has no attribute 'message'" 

答えて

1

これすなわち任意のdictの値あなたのために働くはずです。

from flask import jsonify, request 
... 
message = request.json['message'] 
return jsonify({'some_message':message}) 

あなたが混乱している場合は、Pythonでrequest.json.messagerequest.json['message']を交換することはできません。後者は唯一の選択肢です。これはDjangoのテンプレートで動作しますが、それは別の話です。

https://www.tutorialspoint.com/python/python_dictionary.htm

+0

これは魅力的です。どうもありがとう! – Danzeeeee

1

この使用してみてください:あなたは、文字列(メッセージの値)を返すようにしたい場合は、代わりにreturn jsonify(data)

を、あなただけ先に行くと、値を返すことができるようにあなただろうreturn data['message']