AngularJS-我们应该在服务中包装$ http方法吗

用户名

我的问题是,鉴于拦截器的强大功能,包装$http服务是否有意义,以便我所有其他代码仅调用该包装器。现在,拦截器可以轻松完成诸如标头/异常处理之类的基本任务。因此,尽管我现在无法想到一个有效的用例,但可以说只是为了防止将来的任何api更改等$http或者稍后再迁移到$ resource?

还请注意,这里我说的是围绕$http的方法提供的基本包装服务,而不是诸如DataService之类的客户端服务,该服务具有包装$http调用的方法sendData,receiveData 请在下面找到示例代码-

angular.module(‘myapp’).factory(‘myhttpwrapper’, ['$http', function (http) {
  return {

    myGet: function (getUrl) {
      return http.get(getUrl);
    },
    myPost: function (postUrl, data) {
      return http.post(postUrl, data);
    },
    // other $http wrappers
  };
}]);

现在,所有其他的代码将使用myhttpwrapper的myGetmyPost方法代替$http的GET,POST方法。希望有道理!

[编辑]我们肯定会用到哪些用例,以拦截添加标头,记录日志的请求,以及记录日志的响应,异常处理等。但是我确信这些可以由拦截器处理。现在尚不知道从$ http到$ resource的转移。

谢谢。

弗洛里安

对于您描述的特定情况,建议不要使用包装$http这样做并没有真正的收获。

在这种情况下,您可能需要一个更“讲”的API。假设您User的系统中有一个或多个Address您将其描述为基于数据的服务DataService

var app = angular.module("users", []);

app.service("User", ['$http', '$q', function(http, q) {
  return {
    getAddress: function(user) {
      var address = q.defer();
      http.get("/user/" + user.id + "/address").then(function(data) {
        address.resolve(data);
      }, function(err) {
        address.reject(err);
      });
      return address.promise;
    },
    getUser: function() {
      var user = = q.defer();
      http.get("/user/address").then(function(data) {
        user.resolve(data);
      }, function(err) {
        user.reject(err);
      });
      return user.promise;
    }
  }
}]);

这使您可以使用参数进行呼叫。每当需要更改路线时,都只能在一个地方更改它们(例如,如果您有十几个控制器发出$http请求,那真是太糟糕了)。

您也可以使用$resource此处(如果您确实有兼容的资源)。这里的决策因素应该是可读性可重用性以后的更改方便性

因此,如果您仅在进行这些呼叫的地方,而路由却从未改变,请继续使用$http直接使用方法,而无需使用包装器。在不断增长的应用程序中,我认为这不太可能。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

AngularJS-我们应该在服务中包装$ http方法吗

来自分类Dev

我们应该在AngularJS中使用jQuery吗?

来自分类Dev

我们应该在特质中始终使用`override`吗?

来自分类Dev

我们应该在Android的LayoutView或ImageView中设置背景吗?

来自分类Dev

我们还应该在Golang中关闭DB的.Prepare()吗?

来自分类Dev

我们应该在函数中强制转换JQuery参数吗?

来自分类Dev

我们应该在基类中“ super()”吗?

来自分类Dev

为了性能,我们应该在 ES6 类的原型中包含方法吗?

来自分类Dev

我应该在angularjs应用程序中为HTML元素使用Ids吗

来自分类Dev

我应该在angularjs应用程序中为HTML元素使用Ids吗

来自分类Dev

即使表中没有页脚,我们也应该在表中包括表脚元素吗?

来自分类Dev

我们应该在 MVP 模式中检查 Presenter 或 Activity 中的视图可见性吗?

来自分类Dev

我们应该在Vue 3中将mixins转换为基于类的组件定义语法吗?

来自分类Dev

我们应该在neo4jphp中更新节点后更新索引吗?

来自分类Dev

我们应该在另一个类中传递注入的对象吗

来自分类Dev

我们应该在不同的调用之间重用cublasHandle_t吗?

来自分类Dev

我们应该在switch语句中打破默认大小写吗?

来自分类Dev

我们应该在观察者模式中使用WeakReference吗?

来自分类Dev

我们应该在竞争性编程中使用cin.ignore()吗?

来自分类Dev

我们应该在OkHttp中使用Google的安全提供程序吗?

来自分类Dev

我们应该在使Domain Class进入休眠状态时实现Serializable接口吗

来自分类Dev

我们应该在Rails Factory中使用Faker吗?

来自分类Dev

我们应该在C ++中使用exit吗?

来自分类Dev

我们应该在PHP中使用“ --->”之类的对象范围吗?

来自分类Dev

HTML:我们应该在 HTML 文本字段中使用 `type="text"` 吗?

来自分类Dev

我们应该在更新后处理重用代码应用程序吗?

来自分类Dev

我们应该在 sql server 的更新查询中使用 alise 名称吗?

来自分类Dev

我们应该在多层项目中映射枚举吗?

来自分类Dev

我们应该继续在AngularJS中使用表单吗?

Related 相关文章

  1. 1

    AngularJS-我们应该在服务中包装$ http方法吗

  2. 2

    我们应该在AngularJS中使用jQuery吗?

  3. 3

    我们应该在特质中始终使用`override`吗?

  4. 4

    我们应该在Android的LayoutView或ImageView中设置背景吗?

  5. 5

    我们还应该在Golang中关闭DB的.Prepare()吗?

  6. 6

    我们应该在函数中强制转换JQuery参数吗?

  7. 7

    我们应该在基类中“ super()”吗?

  8. 8

    为了性能,我们应该在 ES6 类的原型中包含方法吗?

  9. 9

    我应该在angularjs应用程序中为HTML元素使用Ids吗

  10. 10

    我应该在angularjs应用程序中为HTML元素使用Ids吗

  11. 11

    即使表中没有页脚,我们也应该在表中包括表脚元素吗?

  12. 12

    我们应该在 MVP 模式中检查 Presenter 或 Activity 中的视图可见性吗?

  13. 13

    我们应该在Vue 3中将mixins转换为基于类的组件定义语法吗?

  14. 14

    我们应该在neo4jphp中更新节点后更新索引吗?

  15. 15

    我们应该在另一个类中传递注入的对象吗

  16. 16

    我们应该在不同的调用之间重用cublasHandle_t吗?

  17. 17

    我们应该在switch语句中打破默认大小写吗?

  18. 18

    我们应该在观察者模式中使用WeakReference吗?

  19. 19

    我们应该在竞争性编程中使用cin.ignore()吗?

  20. 20

    我们应该在OkHttp中使用Google的安全提供程序吗?

  21. 21

    我们应该在使Domain Class进入休眠状态时实现Serializable接口吗

  22. 22

    我们应该在Rails Factory中使用Faker吗?

  23. 23

    我们应该在C ++中使用exit吗?

  24. 24

    我们应该在PHP中使用“ --->”之类的对象范围吗?

  25. 25

    HTML:我们应该在 HTML 文本字段中使用 `type="text"` 吗?

  26. 26

    我们应该在更新后处理重用代码应用程序吗?

  27. 27

    我们应该在 sql server 的更新查询中使用 alise 名称吗?

  28. 28

    我们应该在多层项目中映射枚举吗?

  29. 29

    我们应该继续在AngularJS中使用表单吗?

热门标签

归档