我通过Angular $http请求访问API以收集不同足球队的信息.
如果我只是访问一个团队,这没关系 – 我会创建一个发出呼叫的服务,然后在我的控制器中引用服务功能.但是,我想在众多团队中执行此操作,而无需为每个团队创建单独的服务模块.
服务
app.factory('APIService', ['$http',
function($http) {
return $http.get('http://API/team/1204?Authorization=xxxxx')
.success(function(data) {
return data;
})
.error(function(err) {
return err;
});
}
]);
我的控制器里面……
APIService.success(function(data) {
$scope.apiData = data;
});
正如您在服务中看到的那样,团队是特定的,“1204”,并且只会从该团队中获取数据.我想创建一个允许四位数代码可以互换的功能,具体取决于团队,但我不知道如何或放在哪里.
任何帮助都将受到大力赞赏.提前致谢.
最佳答案 我构建了一个Generic Angular Service,它是您在应用程序中需要的唯一服务.
https://github.com/cullimorer/AngularGenericAPIService
该服务包含许多不同的方法:
GET(数组) – GetListData
GET – GetData
PUT – UpdateData
POST – AddData
DELETE – DeleteData
那么,这有什么特别之处呢?那么,你可以调用任何端点传入任意数量的参数.这与C#中的“string.Format”函数非常相似,它将获取指定对象的值并将它们插入另一个字符串中. commonService包含一个名为“stringFormat”的方法,该方法复制此功能以供通用API服务使用.
让我们看看我们在实践中如何做到这一点.如果你想调用一个名为“fooBars”的宁静的API端点,传入一个“ID”为1来返回一个“fooBar”,我们会这样做:
return genericService.getData('fooBars/{0}', [1]);
这将使用URL调用API:
“http://localhost/API/fooBars/1”
第二个参数是一个数组,这样你可以将任意多个参数传入字符串,假设我们有一些“foos”和“bars”,我们可能会这样做:
return genericService.getData('foos/{0}/bars/{1}', [1, 2]);
这将使用URL调用API:
“http://localhost/API/foos/1/bars/2”
等等.这是一个非常简单的服务,但我在所有AngularJS项目中都使用它,因为它很容易实现,这意味着您不必在Angular服务中编写大量不同的查询或编写长字符串连接.