zoukankan      html  css  js  c++  java
  • AngularJS5.0 (第四篇)--拦截器

    开发过程中,经常有在给后台发请求的时候,设置请求头信息(angular5的拦截器可以很方便实现)

      1,新建services/Interceptor.service.ts

      

    import { Injectable } from '@angular/core';
    import { HttpEvent, HttpInterceptor, HttpHandler, HttpRequest, HttpResponse } from '@angular/common/http';
    import { Observable } from 'rxjs/Observable';
    import { ErrorObservable } from 'rxjs/observable/ErrorObservable';
    import { catchError } from 'rxjs/operators';
    import { mergeMap } from 'rxjs/operators';
    
    @Injectable()
    export class InterceptorService implements HttpInterceptor {
        constructor( ) {}
    
        intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
            // const authReq = req.clone({
            //     url: (req.url + '&token=ujusaruu19')  // 对任意请求的url添加token参数
            // });
    
            // return next.handle(authReq).pipe(mergeMap((event: any) => {
            //     if (event instanceof HttpResponse && event.status !== 200) {
            //         return ErrorObservable.create(event);
            //     }
            //     return Observable.create(observer => observer.next(event)); // 请求成功返回响应
            // }),
            //     catchError((res: HttpResponse<any>) => { // 请求失败处理
            //         switch (res.status) {
            //             case 401:
            //                 break;
            //             case 200:
            //                 console.log('业务错误');
            //                 break;
            //             case 404:
            //                 break;
            //             case 403:
            //                 console.log('业务错误');
            //                 break;
            //         }
            //         return ErrorObservable.create(event);
            //     }));
            const Auth = `Bearer 3fba7ad7607aac6ca24a5c97dbdc7afce60c80b8`;
            req = req.clone({
                setHeaders: {
                    Authorization: Auth,
                    Accept: 'application/json',
                    ddd: '123'
                }
            });
            return next.handle(req);
        }
    }

    在app.module.ts中注入拦截器:

      import { HTTP_INTERCEPTORS, HttpClientModule } from '@angular/common/http'; /*拦截器和ajax模块*/

      

    providers: [ /*定义的服务 回头放在这个里面*/
      {
        provide: HTTP_INTERCEPTORS,
        useClass: InterceptorService,
        multi: true
      },
      LoginService
    ],
  • 相关阅读:
    一加5安卓P刷入twrp的recovery
    使用flask搭建微信公众号:实现签到功能
    使用flask搭建微信公众号:接收与回复消息
    Python中的单例设计模式
    Python中的异常处理
    Python面向对象 --- 新旧式类、私有方法、类属性和类方法、静态方法
    Python面向对象的三大特征 --- 封装、继承、多态
    Python面向对象 --- 类的设计和常见的内置方法
    Python中函数装饰器及练习
    Python中函数练习
  • 原文地址:https://www.cnblogs.com/sdorm/p/8805964.html
Copyright © 2011-2022 走看看