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
    ],
  • 相关阅读:
    html <applet>元素属性介绍
    C#内存释放(转)
    mongodb for linux (安装)
    WCF客户端搭建(通过自定义WCF Client封装) wu
    SQL常用语句 wu
    任务调度平台 wu
    将DataSet 纵向显示数据
    关于OP和SI项目的记录点,防止遗忘难以查找
    java进阶
    git代码量统计
  • 原文地址:https://www.cnblogs.com/sdorm/p/8805964.html
Copyright © 2011-2022 走看看