Angular怎么实现错误处理和请求拦截


本篇内容主要讲解“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 文件 ( 文件名可以随意 )最主要的是要实现 HttpInterceptorintercept 方法

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中的空字符串”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么用python快速去除list中的空字符串”文章能帮助大家解决问题。直接实现如下:结果:[‘abc’, …

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 02/28 12:39
下一篇 02/28 13:24

相关推荐