我正在使用角度1.4.8并且在get请求中有编码参数的bug。
这是我的服务:
angular
.module('test')
.factory('User',User);
/* @ngInject */
function User($resource) {
return $resource('api/users/:login', {}, {
'query': {method: 'GET', isArray: false},
'get': {
method: 'GET',
transformResponse: function (data) {
data = angular.fromJson(data);
return data;
}
},
'save': {method: 'POST'},
'update': {method: 'PUT'},
'delete': {method: 'DELETE'}
});
}
当我使用它时:
return User.get({
page: 1,
size: 20,
sort: 'email asc' //THIS IS A PROBLEM
}
).$promise.then(function (data, headersGetter) {
return data.content;
});
我的要求是:
http://localhost:3000/api/users?page=0&size=10&sort=email+asc
但它应该看起来像:
http://localhost:3000/api/users?page=0&size=10&sort=email%20asc
为什么angular没有正确编码该参数? 如何解决这个问题?
答案 0 :(得分:0)
如果需要,您可以手动编码。 试试这个:
sort: encodeURIComponent('email asc')
或者更好的是,将整个完成的url字符串包装在encodeURIComponent中。
请注意,url参数中的空格无效。编码会在空格为的地方添加%2520。
See this question asking/explaining reason for %2520 instead of %20