sstep1:新建http-Interceptor.ts文件

  1. import { Injectable } from '@angular/core';
  2. import { HttpInterceptorService } from 'ng-http-interceptor';
  3. import { Observable } from 'rxjs';
  4. import { URLService } from './urls';
  5. import { MsgBarService } from './msg-bar';
  6.  
  7. @Injectable()
  8. export class HttpIntService {
  9.  
  10. constructor(public httpservice: HttpInterceptorService, public urlservice: URLService, private ms: MsgBarService) {
  11. httpservice.request().addInterceptor((data, method, option) => {
  12. data[0] = this.urlservice.getUrl(data[0]);//地址拼接
  13. return data;
  14. })
  15.  
  16. httpservice.response().addInterceptor(response => {
  17. return response.map(result => {
  18. var json = result.json();
  19. if (json.state && json.state.code == 200) {
  20. return result;// 返回请求结果
  21. } else if (json.state && json.state.code == 600) {
  22. //兑换商品是积分不足
  23. // return result;
  24. } else {
  25. this.ms.showError(json.state.msg);//统一处理返回的提示信息
  26. }
  27. // //返回状态
  28. throw json.state.msg;
  29. }).catch(error => {
  30. if (typeof error === 'string') {
  31. this.ms.showError(error);
  32. }
  33. else if (error != response) {
  34. response.subscribe(p => {
  35. this.ms.showError('服务器发生错误');
  36. })
  37. }
  38. else {
  39. this.ms.showError('服务器发生错误');
  40. }
  41. return Observable.throw(error)
  42. })
  43. })
  44.  
  45. }
  46.  
  47. }

step2:在app.module.ts文件中添加HttpIntService,并且在构造器中添加。

  1. @NgModule({
  2. declarations: [
  3. MyApp,
  4. TabsPage,
  5. ],
  6. imports: [
  7. BrowserModule,
  8. HttpModule,
  9. HttpInterceptorModule,
  10. IonicModule.forRoot(MyApp,{
  11. backButtonText:'',
  12. backButtonIcon:'jf-arrow-back',//自定义返回按钮图标
  13. iconMode:'ios',//统一图标样式
  14. mode: 'ios',//Android和iOS模式统一
  15. menuType:'reveal',
  16. pageTransition:'ios-transition',
  17. tabsHideOnSubPages:true,
  18. preloadModules: true
  19. })
  20. ],
  21. bootstrap: [IonicApp],
  22. entryComponents: [],
  23. providers: [
  24. StatusBar,
  25. SplashScreen,
  26. HttpIntService,
  27. URLService,
  28. HttpInterceptorService,
  29. WechatService,
  30. { provide: ErrorHandler, useClass: IonicErrorHandler }
  31. ]
  32. })
  33.  
  34. export class AppModule {
  35. constructor(_:HttpIntService){
  36.  
  37. }
  38. }

ionic2+Angular 使用HttpInterceptorService拦截器 统一处理数据请求的更多相关文章

  1. angular 用拦截器统一处理http请求和响应 比如加token

    想使用angularjs里的htpp向后台发送请求,现在有个用户唯一识别的token想要放到headers里面去,也就是{headres:{'token':1}} index.html里引入以下js: ...

  2. (转)Angular中的拦截器Interceptor

    什么是拦截器? 异步操作 例子 Session 注入(请求拦截器) 时间戳(请求和响应拦截器) 请求恢复 (请求异常拦截) Session 恢复 (响应异常拦截器) 转之:http://my.osch ...

  3. AngularJS 拦截器实现全局$http请求loading效果

    日常项目开发中,当前端需要和后端进行数据交互时,为了友好的UI效果,一般都会在前端加个loading的状态提示(包括进度条或者icon显示),数据传输或交互完成之后,再隐藏/删除loading提示. ...

  4. 解决SpringMVC拦截器中Request数据只能读取一次的问题

    解决SpringMVC拦截器中Request数据只能读取一次的问题 开发项目中,经常会直接在request中取数据,如Json数据,也经常用到@RequestBody注解,也可以直接通过request ...

  5. angular之interceptors拦截器

    <!DOCTYPE html> <html ng-app="nickApp"> <head> <meta charset="UT ...

  6. axios封装,使用拦截器统一处理接口

    1.项目路径下,引入axios.qs依赖 npm install axios npm install qs 2.在项目的src路径下新建一个commJs文件夹,在commJs文件夹里新建aps.js和 ...

  7. angular http interceptors 拦截器使用分享

    拦截器 在开始创建拦截器之前,一定要了解 $q和延期承诺api 出于全局错误处理,身份验证或请求的任何同步或异步预处理或响应的后处理目的,希望能够在将请求移交给服务器之前拦截请求,并在将请求移交给服务 ...

  8. Okhttp拦截器统一异常处理并多次读取response.body().string()

    参考:https://blog.csdn.net/a624806998/article/details/73863606 引言: 写这篇文章,因为在自己编写实现Http日志拦截器的时候,在拦截器中使用 ...

  9. Struts2 在登录拦截器中对ajax请求的处理

    前言: 由于ajax请求不像http请求,可以直接进行页面跳转,你返回的所有东西,ajax都只会识别为一个字符串. 之前尝试的方法是在拦截器中返回一个标识给ajax,然后再在每一个ajax请求成功之后 ...

随机推荐

  1. UE4 Pure函数的特点

    蓝图里的Pure函数跟正常函数的区别是:Pure函数在它连接到的正常函数执行的时候才执行,正常函数按照连接的顺序执行. Pure函数不会改变游戏中其他的变量,所以getter和其他一些纯计算的函数一般 ...

  2. 微信小程序 PHP后端form表单提交实例详解

    微信小程序php后端form表单 https://www.cnblogs.com/tdalcn/p/7092716.html 1.小程序相对于之前的WEB+PHP建站来说,个人理解为只是将web放到了 ...

  3. 把织梦安装到子目录,不读取CSS 没有样式?

    我在A5上找的一个模板,照着说明安装到根目录就正常,我想安装到子目录下面,结果很乱 应该是不读取CSS. {dede:global.cfg_templets_skin/}/style/about.cs ...

  4. PhpStorm中报 “Cannot run program git.exe, 系统找不到指定的文件” 

    http://blog.csdn.net/lamp_yang_3533/article/details/52003021 在使用PhpStorm的GitHub或Git功能时,经常会出现以下错误信息: ...

  5. Python自建logging模块

    本章将介绍Python内建模块:日志模块,更多内容请从参考:Python学习指南 简单使用 最开始,我们用最短的代码体验一下logging的基本功能. import logging logger = ...

  6. iphone开发笔记目录

    http://www.cnblogs.com/syxchina/archive/2012/10/20/2732731.html#2653802

  7. 今天遇到了一个Spring出现的一个未知错误,分享下

    异常内容: 未知错误[COM999] 使用环境:dubbo+SpringMVC+myBatis 解决方案:检查Spring配置文件,发现配置文件在注入Service的时候写错了 com.wu.wsf. ...

  8. Java中实例方法、类方法和构造方法

    类方法,有static修饰符,典型的主函数public static void main(String[] args){}实例方法,就是一般的方法构造方法,没有返回值(就是连void都没有),方法名与 ...

  9. 动态添加div及对应的js、css文件

    动态添加div及对应的js.css文件 在近期的项目开发中需要在首页中添加很多面板型的div,直接加载代码显得很繁琐,于是利用js封装一个动态添加div及其对应css文件和js文件的方法供大家参考使用 ...

  10. javascript对象的标签

    [[proto]]标签 [[class]]标签 [[class]] 标签,代表这对象是哪个类型的.在js中不能直接访问到.可以通过Object.prototype.toString.call(obj) ...