我最近使用angularjs调用后台代码时,遇到一个问题。
utils.requestMethod = function(url) {
var deferred = $q.defer();
$http({
method: 'POST',
url: url
}).then(
function(response) {
deferred.resolve(response.data);
},
function(errResponse) {
deferred.reject(errResponse.status+" "+errResponse.statusText+".");
}
);
return deferred.promise;
};
使用以上请求是没有问题的,参数URL是由URL地址+后面所需要的参数组成的,现在我有两个问题
URL是否有长度限制?
目前拼接的URL就只有3个参数,所以还比较短,但是我想,如果参数很多,会不会导致发送请求的时候只截取到最大限制长度然后发生传输失败呢?
URL参数是否可以使用Object方式传递过去?
针对上面的问题,我考虑想不使用URL拼接的方式,而是将参数作为一个Object传过去来实现。后来查了一下资料,确实$http是有parmas这个参数可以将所需要的参数作为一个map传递过去,如:
utils.test = function() {
var deferred = $q.defer();
$http({
method: 'POST',
url: '**/**/**/**',
params:{
'ipAddress':'1.1.1.1',
'username':'test',
'password':'test'
}
}).then(
function(response) {
deferred.resolve(response.data);
},
function(errResponse) {
deferred.reject(errResponse.status+" "+errResponse.statusText+".");
}
);
return deferred.promise;
};
但是其实这个params最后还是拼接在URL的后面传递过去的,这个和我之前使用的是一样的,所以我想问下,是否有我想要的方式呢?