我有一个像我这样创建的restangular服务:
(function() {
'use strict';
angular
.module("myapp")
.factory('stats.api.service', StatsApi);
StatsApi.$inject = ['Restangular'];
function StatsApi(Restangular) {
return Restangular.service('stats');
}
}());
我将此工厂添加到api
的服务中,并尝试从中调用它。他们中的大多数都有效,但某个人没有。
例如,此调用有效。 (其中id
是一个包含我想要的ID的字符串。
api.getList().then(function(data) {
console.log(data);
});
以上调用使用以下网址:http://localhost/myapp/api/stats
这是我期望的网址。
现在,如果我使用此代码:
api.getList('pit').then(function(data) {
console.log(data);
});
它会调用http://localhost/myapp/api/stats?0=p&1=i&2=t
现在我可能只是遗漏了一些东西,但应该拨打http://localhost/myapp/api/stats/pit,对吧?
关于我做错了什么以及如何解决它的任何想法?
编辑:
我想出了如何调用我想要的网址,但我仍然觉得它并不遵循文档所说的内容。要致电http://localhost/myapp/api/stats/pit,我必须使用
api.one('pit').getList().then(function(data) {
console.log(data);
});
答案 0 :(得分:0)
如果您查看github repo of restangular处的方法说明,您会看到集合的getList 需要queryParams as first paramter
。
getList([queryParams,headers]):再次获取自己(记住这是一个 集合)
另一方面元素的获取列表需要subElement as first parameter
。
getList(subElement,[queryParams,headers]):获取嵌套资源。 subElement是必需的。它是一个带有嵌套名称的字符串 资源(和URL)。例如建筑物
我个人想要使用Restangular的service
功能,但在很多情况下它迫使我在许多事情上做额外的工作。我的建议是,使用one()
或all()
来构建网址。