将http转换为在angularjs中发布

时间:2016-12-20 13:07:16

标签: python angularjs post get

由于安全原因,我正在将现有的http.get请求转换为http.post请求。 即使我写的代码工作,我不认为它是非常强大的。有没有更好的方法来定义数据对象?

我更喜欢发送字典并在后端阅读。

示例代码如下所示。

http.get("/ajax/validate_login.py",{params:{"email":$scope.userEmail,"password":$scope.password}}).then(function(response) {
 console.log(response);
});

转换为

$http({ method: 'POST', url: '/ajax/validate_login.py?',
          data: 'email=' + $scope.userEmail + '&password=' + $scope.password ,
          headers: {'Content-Type': 'application/x-www-form-urlencoded'}
        }).then(function(response) {
console.log(response);
});

有更好的方法在post请求中定义数据吗?

后端代码如下

#!/usr/bin/python
import cgi
import json
import MySQLdb
import MySQLdb.cursors
import hashlib
import sys



form = cgi.FieldStorage()

email=form["email"].value
password = form["password"].value


print "Content-Type: application/json"
print

1 个答案:

答案 0 :(得分:6)

您可以使用$httpParamSerializer将对象转换为添加到有效负载的字符串。有一个特定的行为像jQuery,我相信你正在寻找。

示例:

.controller(function($http, $httpParamSerializerJQLike) {
  //...

  $http({
    url: myUrl,
    method: 'POST',
    data: $httpParamSerializerJQLike(myData),
    headers: {
      'Content-Type': 'application/x-www-form-urlencoded'
    }
  });

});

更多信息:https://docs.angularjs.org/api/ng/service/$httpParamSerializerJQLike