angular 拦截器,

  angular 拦截器,

  Angular如何拦截和封装请求?下面这篇文章介绍Angular中请求拦截的方法,希望对你有帮助!

  在上一篇文章中,Angular使用了Api代理。我们处理了本地联调接口的问题,并使用了代理。

  我们的接口是分开编写和处理的。在实际的开发项目中,有很多接口,有些需要登录凭证,有些不需要。一个接口处理不当,可以考虑拦截封装请求吗?【相关教程推荐:《angular教程》】

  本文将认识到这一点。

  区分环境

  我们需要拦截不同环境中的服务。当使用angular-cli生成项目时,它已经自动做出了环境的区分。在应用程序/环境目录中:

  环境

  环境.产品ts //生产环境中使用的配置

  环境. ts //开发环境使用的配置我们按如下方式修改开发环境:

  //environment . ts

  导出常量环境={

  基本Url:“”,

  生产:假

  };BaseUrl是发送请求时添加在请求前面的字段,它指向您想要请求的地址。我什么都没加。其实相当于加了http://localhost:4200。

  添加拦截器

  我们生成服务http-interceptor . service . ts interceptor服务,我们希望每个请求都经过这个服务。

  //http-interceptor.service.ts

  从“@angular/core”导入{ injective };

  导入{

  HttpEvent,

  HttpHandler,

  HttpInterceptor,//拦截器

  HttpRequest,//请求

  }来自 @ angular/common/http ;

  从“rxjs”导入{ Observable };

  从“rxjs/operators”导入{ tap };

  从“src/environments/environment”导入{ environment };

  @可注射({

  providedIn:“根”

  })

  导出类HttpInterceptorService实现HttpInterceptor {

  构造函数(){ }

  intercept(req: HttpRequestany,next:HttpHandler):observable httpeventany {

  let secure req:http requestany=req;

  secureReq=secureReq.clone({

  url: environment.baseUrl req.url

  });

  返回next.handle(secureReq)。管道(

  点击(

  (回应:任何)={

  //处理响应的数据

  console.log(响应)

  },

  (错误:任何)={

  //处理错误的数据

  console.log(错误)

  }

  )

  )

  }

  }为了让拦截器生效,我们仍然需要注入:

  //app.module.ts

  从“@angular/common/http”导入{ HttpClientModule,HTTP _ INTERCEPTORS };

  //拦截器服务

  从“”导入{ HttpInterceptorService }。/services/http-interceptor . service ;

  提供商:[

  //依赖注入

  {

  提供:HTTP _拦截器,

  use class:HttpInterceptorService,

  多:真的,

  }

  ],验证

  到目前为止,我们已经成功实现了拦截器。如果运行npm run dev,您将在控制台上看到以下信息:

  为了验证您是否需要内容证书来访问内容,我在这里尝试使用[POST]https://jimmyarea.com/api/private/leave/message,的界面,得到了以下错误:

  后端已经处理了这个接口,需要证书才能操作,所以直接报错401。

  所以,问题来了。登录后,我们需要如何携带凭据?

  如下,我们修改拦截器内容:

  let secure req:http requestany=req;

  //.

  //使用localhost在请求标头上存储用户凭据。

  if(window . local storage . getitem( ut ){

  let token=window . local storage . getitem( ut )

  secureReq=secureReq.clone({

  头:req.headers.set(token ,token)

  });

  }

  //.该凭证的有效期要求读者在进入系统时判断有效期是否有效,然后考虑重置localstorage的值,否则总是报错。这个也很简单,方便封装localstorage ~

  [结束]

  有关编程的更多信息,请访问:编程入门!这就是Angular拦截和封装请求的方式。更多详情请关注我们的其他相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: