ionic2+Angular 使用HttpInterceptorService拦截器 统一处理数据请求
sstep1:新建http-Interceptor.ts文件
- import { Injectable } from '@angular/core';
- import { HttpInterceptorService } from 'ng-http-interceptor';
- import { Observable } from 'rxjs';
- import { URLService } from './urls';
- import { MsgBarService } from './msg-bar';
- @Injectable()
- export class HttpIntService {
- constructor(public httpservice: HttpInterceptorService, public urlservice: URLService, private ms: MsgBarService) {
- httpservice.request().addInterceptor((data, method, option) => {
- data[0] = this.urlservice.getUrl(data[0]);//地址拼接
- return data;
- })
- httpservice.response().addInterceptor(response => {
- return response.map(result => {
- var json = result.json();
- if (json.state && json.state.code == 200) {
- return result;// 返回请求结果
- } else if (json.state && json.state.code == 600) {
- //兑换商品是积分不足
- // return result;
- } else {
- this.ms.showError(json.state.msg);//统一处理返回的提示信息
- }
- // //返回状态
- throw json.state.msg;
- }).catch(error => {
- if (typeof error === 'string') {
- this.ms.showError(error);
- }
- else if (error != response) {
- response.subscribe(p => {
- this.ms.showError('服务器发生错误');
- })
- }
- else {
- this.ms.showError('服务器发生错误');
- }
- return Observable.throw(error)
- })
- })
- }
- }
step2:在app.module.ts文件中添加HttpIntService,并且在构造器中添加。
- @NgModule({
- declarations: [
- MyApp,
- TabsPage,
- ],
- imports: [
- BrowserModule,
- HttpModule,
- HttpInterceptorModule,
- IonicModule.forRoot(MyApp,{
- backButtonText:'',
- backButtonIcon:'jf-arrow-back',//自定义返回按钮图标
- iconMode:'ios',//统一图标样式
- mode: 'ios',//Android和iOS模式统一
- menuType:'reveal',
- pageTransition:'ios-transition',
- tabsHideOnSubPages:true,
- preloadModules: true
- })
- ],
- bootstrap: [IonicApp],
- entryComponents: [],
- providers: [
- StatusBar,
- SplashScreen,
- HttpIntService,
- URLService,
- HttpInterceptorService,
- WechatService,
- { provide: ErrorHandler, useClass: IonicErrorHandler }
- ]
- })
- export class AppModule {
- constructor(_:HttpIntService){
- }
- }
ionic2+Angular 使用HttpInterceptorService拦截器 统一处理数据请求的更多相关文章
- angular 用拦截器统一处理http请求和响应 比如加token
想使用angularjs里的htpp向后台发送请求,现在有个用户唯一识别的token想要放到headers里面去,也就是{headres:{'token':1}} index.html里引入以下js: ...
- (转)Angular中的拦截器Interceptor
什么是拦截器? 异步操作 例子 Session 注入(请求拦截器) 时间戳(请求和响应拦截器) 请求恢复 (请求异常拦截) Session 恢复 (响应异常拦截器) 转之:http://my.osch ...
- AngularJS 拦截器实现全局$http请求loading效果
日常项目开发中,当前端需要和后端进行数据交互时,为了友好的UI效果,一般都会在前端加个loading的状态提示(包括进度条或者icon显示),数据传输或交互完成之后,再隐藏/删除loading提示. ...
- 解决SpringMVC拦截器中Request数据只能读取一次的问题
解决SpringMVC拦截器中Request数据只能读取一次的问题 开发项目中,经常会直接在request中取数据,如Json数据,也经常用到@RequestBody注解,也可以直接通过request ...
- angular之interceptors拦截器
<!DOCTYPE html> <html ng-app="nickApp"> <head> <meta charset="UT ...
- axios封装,使用拦截器统一处理接口
1.项目路径下,引入axios.qs依赖 npm install axios npm install qs 2.在项目的src路径下新建一个commJs文件夹,在commJs文件夹里新建aps.js和 ...
- angular http interceptors 拦截器使用分享
拦截器 在开始创建拦截器之前,一定要了解 $q和延期承诺api 出于全局错误处理,身份验证或请求的任何同步或异步预处理或响应的后处理目的,希望能够在将请求移交给服务器之前拦截请求,并在将请求移交给服务 ...
- Okhttp拦截器统一异常处理并多次读取response.body().string()
参考:https://blog.csdn.net/a624806998/article/details/73863606 引言: 写这篇文章,因为在自己编写实现Http日志拦截器的时候,在拦截器中使用 ...
- Struts2 在登录拦截器中对ajax请求的处理
前言: 由于ajax请求不像http请求,可以直接进行页面跳转,你返回的所有东西,ajax都只会识别为一个字符串. 之前尝试的方法是在拦截器中返回一个标识给ajax,然后再在每一个ajax请求成功之后 ...
随机推荐
- UE4 Pure函数的特点
蓝图里的Pure函数跟正常函数的区别是:Pure函数在它连接到的正常函数执行的时候才执行,正常函数按照连接的顺序执行. Pure函数不会改变游戏中其他的变量,所以getter和其他一些纯计算的函数一般 ...
- 微信小程序 PHP后端form表单提交实例详解
微信小程序php后端form表单 https://www.cnblogs.com/tdalcn/p/7092716.html 1.小程序相对于之前的WEB+PHP建站来说,个人理解为只是将web放到了 ...
- 把织梦安装到子目录,不读取CSS 没有样式?
我在A5上找的一个模板,照着说明安装到根目录就正常,我想安装到子目录下面,结果很乱 应该是不读取CSS. {dede:global.cfg_templets_skin/}/style/about.cs ...
- PhpStorm中报 “Cannot run program git.exe, 系统找不到指定的文件”
http://blog.csdn.net/lamp_yang_3533/article/details/52003021 在使用PhpStorm的GitHub或Git功能时,经常会出现以下错误信息: ...
- Python自建logging模块
本章将介绍Python内建模块:日志模块,更多内容请从参考:Python学习指南 简单使用 最开始,我们用最短的代码体验一下logging的基本功能. import logging logger = ...
- iphone开发笔记目录
http://www.cnblogs.com/syxchina/archive/2012/10/20/2732731.html#2653802
- 今天遇到了一个Spring出现的一个未知错误,分享下
异常内容: 未知错误[COM999] 使用环境:dubbo+SpringMVC+myBatis 解决方案:检查Spring配置文件,发现配置文件在注入Service的时候写错了 com.wu.wsf. ...
- Java中实例方法、类方法和构造方法
类方法,有static修饰符,典型的主函数public static void main(String[] args){}实例方法,就是一般的方法构造方法,没有返回值(就是连void都没有),方法名与 ...
- 动态添加div及对应的js、css文件
动态添加div及对应的js.css文件 在近期的项目开发中需要在首页中添加很多面板型的div,直接加载代码显得很繁琐,于是利用js封装一个动态添加div及其对应css文件和js文件的方法供大家参考使用 ...
- javascript对象的标签
[[proto]]标签 [[class]]标签 [[class]] 标签,代表这对象是哪个类型的.在js中不能直接访问到.可以通过Object.prototype.toString.call(obj) ...