Angular - 管理HTTP请求错误
创始人
2024-10-14 16:31:26
0

在Angular中,可以使用拦截器(Interceptor)来管理HTTP请求错误。以下是一个解决方法的示例代码:

  1. 创建一个拦截器服务(error.interceptor.ts):
import { Injectable } from '@angular/core';
import { HttpInterceptor, HttpRequest, HttpHandler, HttpEvent, HttpErrorResponse } from '@angular/common/http';
import { Observable, throwError } from 'rxjs';
import { catchError } from 'rxjs/operators';

@Injectable()
export class ErrorInterceptor implements HttpInterceptor {

  constructor() { }

  intercept(request: HttpRequest, next: HttpHandler): Observable> {
    return next.handle(request).pipe(
      catchError((error: HttpErrorResponse) => {
        let errorMessage = '';
        if (error.error instanceof ErrorEvent) {
          // 客户端错误
          errorMessage = `Error: ${error.error.message}`;
        } else {
          // 服务器错误
          errorMessage = `Error Code: ${error.status}\nMessage: ${error.message}`;
        }
        console.error(errorMessage);
        return throwError(errorMessage);
      })
    );
  }
}
  1. 在app.module.ts中注册拦截器服务:
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';

import { ErrorInterceptor } from './error.interceptor'; // 引入拦截器服务

import { AppComponent } from './app.component';

@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule,
    HttpClientModule
  ],
  providers: [
    { provide: HTTP_INTERCEPTORS, useClass: ErrorInterceptor, multi: true } // 注册拦截器服务
  ],
  bootstrap: [AppComponent]
})
export class AppModule { }
  1. 使用HTTP服务发送请求:
import { Component } from '@angular/core';
import { HttpClient } from '@angular/common/http';

@Component({
  selector: 'app-root',
  template: `
    
  `
})
export class AppComponent {

  constructor(private http: HttpClient) { }

  sendRequest() {
    this.http.get('https://api.example.com/data').subscribe(
      response => {
        console.log('成功:', response);
      },
      error => {
        console.error('错误:', error);
      }
    );
  }
}

在上述示例中,拦截器服务会拦截每个发出的HTTP请求,并对错误进行处理。如果是客户端错误,它会打印并抛出一个错误消息;如果是服务器错误,它会打印并抛出错误代码和消息。在组件中,可以通过订阅HTTP请求的成功和错误回调来处理响应。

相关内容

热门资讯

此事引发广泛关注!微乐陕西小程... 此事引发广泛关注!微乐陕西小程序破解器,hhpoker透视实战视频(透视)脚本-都是存在有挂1、微乐...
为了进一步!越乡游义乌辅助器安... 为了进一步!越乡游义乌辅助器安全吗,拱趴大菠萝辅助(透视)挂-其实是真的挂1、越乡游义乌辅助器安全吗...
迎来新发展!微信小程序开心十三... 迎来新发展!微信小程序开心十三张脚本,创思维辅助器(透视)神器-原来有挂;1)微信小程序开心十三张脚...
在玩家背景下!中至常熟辅助,中... 在玩家背景下!中至常熟辅助,中至抚州数刀辅助器(透视)器-好像有挂1、首先打开中至抚州数刀辅助器辅助...
针对!新海贝之城辅助怎么设置,... 针对!新海贝之城辅助怎么设置,奇迹陕西辅助(透视)方法-一直存在有挂1)新海贝之城辅助怎么设置辅助插...
据通报!菠萝辅助app,陕西奇... 据通报!菠萝辅助app,陕西奇迹打锅子破解(透视)方法-都是是真的挂1、陕西奇迹打锅子破解公共底牌简...
无独有偶!新九哥辅助,同城游辅... 无独有偶!新九哥辅助,同城游辅助工具(透视)app-果然真的有挂;1、金币登录送、破产送、升级送、活...
据悉!传送屋激k辅助靠谱吗,德... 据悉!传送屋激k辅助靠谱吗,德普之星私人局辅助(透视)脚本-果然真的是有挂1、传送屋激k辅助靠谱吗免...
有玩家发现!小程序雀神雀神智能... 有玩家发现!小程序雀神雀神智能插件,天天川南辅助(透视)工具-好像存在有挂小程序雀神雀神智能插件是不...
据目击者称!朋朋政和软件改牌,... 据目击者称!朋朋政和软件改牌,微信茶馆辅助(透视)方法-切实是真的挂1、用户打开应用后不用登录就可以...