【问题标题】:Referencing multiple API calls in one Service (Angular)在一项服务中引用多个 API 调用(Angular)
【发布时间】:2016-08-25 12:56:33
【问题描述】:

我正在通过 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”,并且只会从该团队中提取数据。我想创建一个函数,让这四位代码可以根据团队互换,但我不知道如何放置或放置在哪里。

任何帮助将不胜感激。提前致谢。

【问题讨论】:

    标签: javascript angularjs json angularjs-service angularjs-http


    【解决方案1】:

    我构建了一个通用 Angular 服务,它是您的应用程序中唯一需要的服务。

    https://github.com/cullimorer/AngularGenericAPIService

    该服务包含许多不同的方法:

    GET (array) - GetListData

    GET - 获取数据

    PUT - 更新数据

    POST - 添加数据

    DELETE - 删除数据

    那么,这有什么特别之处呢?好吧,发生的事情是您可以调用任意端点传入任意数量的参数。这很像 C# 中的“string.Format”函数,它将获取指定对象的值并将它们插入另一个字符串。 commonService 包含一个名为“stringFormat”的方法,该方法复制此功能以供通用 API 服务使用。

    让我们看看我们如何在实践中做到这一点。如果您想调用一个名为“fooBars”的 RESTful 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 服务中编写大量不同的查询或编写长字符串连接。

    【讨论】:

    • 您也可以添加link 作为评论回复
    • 你知道ngResource吗?在 OP 一直在询问的情况下,它听起来更好
    • 我以前没有遇到过,但看起来它达到了相同的结果。肯定会考虑将其与未来的项目集成以进行尝试!谢谢。
    • 感谢您的努力,您将其 +1,我只是建议您添加更多配置来喜欢,拥有自己的 transformRequest 和 transformResponse。为您的所有努力 +1 并为您的回购加注星标
    • 是的,这是个好主意。如果您想提出一些更改,我们可以一起进行吗?
    猜你喜欢
    • 2020-10-20
    • 2013-04-09
    • 1970-01-01
    • 2017-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多