Angular 2(Ionic 2):拦截ajax请求

2024-01-31

使用 Angular 1.x 可以使用以下代码拦截所有 ajax 请求:

$httpProvider.interceptors.push('interceptRequests');
...
var app_services = angular.module('app.services', []);
   app_services.factory('interceptRequests', [function () {
   var authInterceptorServiceFactory = {};
   var _request = function (config) {
   //do something here
   };
   var _responseError = function (rejection) {
   //do something here
   }
   authInterceptorServiceFactory.request = _request;
   authInterceptorServiceFactory.responseError = _responseError;
   return authInterceptorServiceFactory;
}]);

Angular 2 中有类似的(或开箱即用的)东西吗?


一种方法可能是延长HTTP拦截调用的对象:

@Injectable()
export class CustomHttp extends Http {

  request(url: string | Request, options?: RequestOptionsArgs): Observable<Response> {
    console.log('request...');
    return super.request(url, options).catch(res => {
      // do something
    });        
  }

  get(url: string, options?: RequestOptionsArgs): Observable<Response> {
    console.log('get...');
    return super.get(url, options).catch(res => {
      // do something
    });
  }
}

并按如下所述注册:

bootstrap(AppComponent, [HTTP_PROVIDERS,
    new Provider(Http, {
      useFactory: (backend: XHRBackend, defaultOptions: RequestOptions) => new CustomHttp(backend, defaultOptions),
      deps: [XHRBackend, RequestOptions]
  })
]);

例如,您可以利用catch运算符捕获错误并在全局范围内处理它们...

看看这个笨蛋:https://plnkr.co/edit/ukcJRuZ7QKlV73jiUDd1?p=preview https://plnkr.co/edit/ukcJRuZ7QKlV73jiUDd1?p=preview.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Angular 2(Ionic 2):拦截ajax请求 的相关文章

随机推荐

  • Python 作为“perl -pe”,为标准输入中的每一行执行Python命令[重复]

    这个问题在这里已经有答案了 可能的重复 Python 相当于 perl pe https stackoverflow com questions 7842919 python equivalent to perl pe 有没有办法处理每一行
  • PHP / MySQL 概念数据库“同步”问题

    我正在开发一个 PHP 类来实现PDO将本地数据库的表与远程数据库的表同步 问题 我正在寻找一些关于如何在我的 同步 过程中实现 备份 功能的想法 方法 建议 The ideas is 在实际插入数据之前 我会完全擦除本地表的数据 时间不是
  • 如何使用 PHPUnit 设置 ExpectedException()?

    使用 PHPUnit 我可以测试成功如果对类的特定调用正确抛出如下异常 try dummy Import Driver Excel get file type from file name BAD NAME nnn catch Except
  • IBM Worklight - 如何在 Android 中启用 WebView 调试?

    由于 Chrome 有一个很棒的远程调试功能 我想知道这对 Worklight 中的开发有何帮助 在下面的文档中 他们说要调试 WebView 的内容 您需要通过调用 setWebContentsDebuggingEnabled WebVi
  • Android Spinner 项目作为网格

    默认情况下 单击微调器时 项目将显示为列表 我想更改显示为网格的项目 我怎样才能做到这一点 我只需要一些指导 谢谢 更新 这是我的代码 我的旋转下拉菜单显示为多行网格 我附上了一张它此时的样子的图片 我也无法选择值 package com
  • 使用 pip install 安装 Jupyter Notebook 时出错

    我想在没有 Anaconda 的情况下安装 Jupyter Notebook 我使用的是 Python 版本 3 12 0 安装 Jupyter Notebook 时使用pip install notebook 出现以下错误 Collect
  • Monaco Editor 获取插入符号的源代码索引

    有没有办法将插入符号位置作为源代码字符串中的索引 我知道我可以获取位置 这将为我提供一个包含行和列的对象 但是有没有办法获取或将行 列转换为字符串字符索引 例如 如果我有 using System using System Data 我将插
  • 如何修复 Git 合并与断点文件中的冲突?

    我有一个 iPad 应用程序 XCode 5 iOS 7 Git 源代码控制和 Storyboards 我目前正在处理两 2 个分支 1 8 1 在 App Store 中 2 0 0 作为工作副本 我对下一个版本的 1 8 1 做了轻微的
  • ASP.Net Core 类库的 Entity Framework Core 迁移

    我一直在尝试遵循 Ben Cull 的建议 http benjii me 2016 06 entity framework core migrations for class library projects http benjii me
  • C++ 项目中 NuGet 包的 PackageReference

    我参与了一个项目 我们在 Visual Studioe 中使用 packages config 文件作为 NuGet 包 然后通过Import我们的项目文件中的声明 如果您总是想要这些包 那么这种方法很好 但是如果开发人员不需要 不想要它们
  • 如何实现flutter web推送通知

    我想知道是否可以在 flutter web 中实现推送通知 我发现我可以使用以下命令为移动应用程序创建推送通知firbase messaging但可以将它用于网络应用程序吗 或任何其他替代方案来实现它 我认为您已经建立了一个 flutter
  • document.addEventListener 与 $(document).on

    我不知何故发现向文档添加事件侦听器的行为有点奇怪 虽然向 HTMLElements 添加侦听器工作正常 但向文档添加侦听器不起作用 但奇怪的是 使用 jQuery 就可以了 那么有人可以解释一下 为什么这两个函数没有做完全相同的事情 cus
  • perl 客户端 SSL 警告:对等证书未验证

    我在使用 Perl 屏幕抓取程序访问 HTTPS 站点时遇到问题 在调试过程中 我运行了以下命令 print res gt headers as string 在输出中 我有以下行 Client SSL Warning Peer certi
  • 我们如何解决 flutter 应用程序中的 firebase 函数内部异常?

    我正在使用 firebase firestore 和 firebase 函数开发一个 flutter 应用程序 我一次又一次地收到此异常 ERROR flutter lib ui ui dart state cc 177 Unhandled
  • 如何回滚临时上下文的更改?

    我创建一个这样的临时上下文 let temporaryContext NSManagedObjectContext concurrencyType PrivateQueueConcurrencyType temporaryContext p
  • 如何在android中使用HttpURLConnection上传包含其他字符串数据的文件?

    我想使用 HttpURLConnection 在一个请求中将包含其他字符串数据的文件上传到服务器 不使用 MultiPartEntityBuilder 目前我可以发送文件 但不能发送其他字符串数据 这是我当前将文件发送到服务器的代码 Htt
  • 找到轮廓曲线中距离最远的点

    我有一些x y我使用以下方法获得高斯核密度估计器 KDE 的数据scipy stats gaussian kde http docs scipy org doc scipy reference generated scipy stats g
  • 触发 Apollo 查询并导致 URL 更改时 useContext 重新渲染

    发生重新渲染的 GIF https gyazo com 20ba4879eacba9f9027886937fe723f0 我不知道如何继续 正如您所看到的 标头的状态 通过上下文传递 正在从用户的数据 gt 未定义 gt 同一用户的数据切换
  • 为什么 npm 的所有操作都需要 sudo ?

    我不知道我是如何做到的 但 npm 似乎需要sudo对于绝对的每个命令 甚至npm help没有 sudo 就无法工作 如果我使用没有的命令sudo 我没看到EACCESS错误 但我的终端会话挂起 然后关闭该选项卡 我在 Mac 上使用 i
  • Angular 2(Ionic 2):拦截ajax请求

    使用 Angular 1 x 可以使用以下代码拦截所有 ajax 请求 httpProvider interceptors push interceptRequests var app services angular module app