由于运行经典ASP的服务器的限制,我的服务必须使用查询字符串:
angular
.module('myServices', ['ng', 'ngResource'])
.factory('Item', ['$resource',
function ($resource) {
return $resource('/api/?p=item/:id');
}]);
我想为它添加额外的查询字符串参数:
Item.query({test: 123}, on_success, on_error);
但是生成的网址是
/api/?p=item?test=123
显然有一个错误,但如何解决它?
提交答案 0 :(得分:68)
您可以使用资源参数。如果未在路径中指定占位符,则会自动将它们转换为查询字符串参数。像那样:
angular
.module('myServices', ['ng', 'ngResource'])
.factory('Item', [
'$resource',
function ($resource) {
return $resource('/api');
}]);
Item.query({p: 'item/1'});
这会产生对/api?p=item/1
的请求。
P.S。
我想你已经知道了,但你不喜欢它。但我仍然认为这是你的正确方法。考虑到您正在处理该后端的错误API设计,您可以将AngularJS资源与另一个为您执行此操作的服务包装起来。
答案 1 :(得分:0)
var deferred = $q.defer();
api.api_name.query({
'param':param_value
},
function(response) {
deferred.resolve(response);
},
function(response) {
deferred.reject(response);
}
);
//
angular
.module('module_name')
.factory('api',function($resource){
var api_var={};
api_var.api_name = $resource('url?param_key=:param', {
param: '@param'
}, {
'query': {
method: 'get'
}
});
return api_var;
});