本篇内容主要讲解“Angular怎么实现错误处理和请求拦截”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Angular怎么实现错误处理和请求拦截”吧!用 Angular 提供的 HttpClient 可以很轻松的实现 API 接口的访问。举个例子 新建一个 http.service.ts
可以在 environment
中配置不同环境的 host 地址再贴一下 proxy.config.json
中有介绍到
{ "/api":{ "target":"http://124.223.71.181", "secure":true, "logLevel":"debug", "changeOrigin":true, "headers":{ "Origin":"http://124.223.71.181" } } }
import{HttpClient}from'@angular/common/http'; import{Injectable}from'@angular/core'; import{environment}from'@env'; @Injectable({providedIn:'root'}) exportclassHttpService{ constructor(privatehttp:HttpClient){} publ免费云主机域名icechoCode(method:'get'|'post'|'delete'|'put'|'patch'='get',params:{code:number}){ switch(method){ case'get': case'delete': returnthis.http[method](`${environment.backend}/echo-code`,{params}); case'patch': case'put': case'post': returnthis.http[method](`${environment.backend}/echo-code`,params); } } }
然后在业务中 我们就可以这样使用
import{Component,OnInit}from'@angular/core'; import{HttpService}from'./http.service'; @Component({ selector:'http', standalone:true, templateUrl:'./http.component.html', }) exportclassHttpComponentimplementsOnInit{ constructor(privatehttp:HttpService){} ngOnInit():void{ this.http.echoCode('get',{code:200}).subscribe(console.log); this.http.echoCode('post',{code:200}).subscribe(console.log); this.http.echoCode('delete',{code:301}).subscribe(console.log); this.http.echoCode('put',{code:403}).subscribe(console.log); this.http.echoCode('patch',{code:500}).subscribe(console.log); } }
这看起来非常简单 类似 Axios
下面介绍一下一些常用的用法
this.http .echoCode('get',{code:200}) .pipe(catchError((err:HttpErrorResponse)=>of(err))) .subscribe((x)=>{ if(xinstanceofHttpErrorResponse){ //dosomething }else{ //dosomething } });
请求拦截是比较常用的例如 你可以在这里判断 cookie 是否有效 / 全局错误处理 …新建 http-interceptor.ts
文件 ( 文件名可以随意 )最主要的是要实现 HttpInterceptor
的 intercept
方法
import{HttpInterceptor,HttpRequest,HttpHandler,HttpResponse,HttpErrorResponse}from'@angular/common/http'; import{Injectable}from'@angular/core'; import{Observable,of,throwError}from'rxjs'; import{filter,catchError}from'rxjs/operators'; import{HttpEvent}from'@angular/common/http'; @Injectable() exportclassHttpInterceptorServiceimplementsHttpInterceptor{ constructor(){} intercept(req:HttpRequest,next:HttpHandler):Observable>{ returnnext .handle(req) .pipe(filter((event)=>eventinstanceofHttpResponse)) .pipe( catchError((error)=>{ console.log('catcherror',error); returnof(error); }) ); } }
然后在 module 中的 providers 中使用 这个拦截器就生效了
@NgModule({ imports:[RouterModule.forChild(routes)], exports:[RouterModule], providers:[ { provide:HTTP_INTERCEPTORS, useClass:HttpInterceptorService, multi:true, }, ], }) exportclassXXXModule{}
到此,相信大家对“Angular怎么实现错误处理和请求拦截”有了更深的了解,不妨来实际操作一番吧!这里是百云主机网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
这篇文章主要介绍“怎么用python快速去除list中的空字符串”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么用python快速去除list中的空字符串”文章能帮助大家解决问题。直接实现如下:结果:[‘abc’, …
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。