【发布时间】:2016-04-25 01:02:20
【问题描述】:
我正在使用 Angular 1.4.8,并且在获取请求中存在编码参数的错误。
这是我的服务:
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
为什么角度没有正确编码该参数? 如何解决这个问题?
【问题讨论】:
-
GET 参数不适用于空格。我会使用两个字段:sortField 和 sortType
-
尝试将
transformRequest: []添加到“获取”定义中。这应该确保请求不会发生不需要的转换。 -
你不能只解码服务器上的参数吗?
-
我不管理服务器,所以我无法更改实现
-
@jim0thy 我按照你说的添加:
'get': { method: 'GET', transformRequest: [], transformResponse: function (data) { data = angular.fromJson(data); return data; } },它仍然无法正常工作,我有 + 符号