最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Angular項目如何使用攔截器?httpClient?請求響應(yīng)處理

 更新時間:2024年06月19日 09:31:06   作者:天天向上518  
這篇文章主要介紹了Angular項目簡單使用攔截器httpClient請求響應(yīng)處理,目前我的Angular版本是Angular?17.3,版本中實現(xiàn)請求和響應(yīng)的攔截處理了,這種機(jī)制非常適合添加如身份驗證頭、錯誤統(tǒng)一處理、日志記錄等功能,需要的朋友可以參考下

1:為啥要使用攔截器 httpClient 請求響應(yīng)處理,其作用我們主要是:

目前我的Angular版本是Angular 17.3,版本中實現(xiàn)請求和響應(yīng)的攔截處理了。這種機(jī)制非常適合添加如身份驗證頭、錯誤統(tǒng)一處理、日志記錄等功能。

======具體的操作步驟=======

2:注入服務(wù):ng g s services/myhttp-interceptorService

 import { Injectable } from '@angular/core';
  import { HttpResponse, HttpRequest, HttpInterceptor, HttpHandler, HttpEvent } from '@angular/common/http';
  import { Observable, tap } from 'rxjs';
  
  @Injectable({
    providedIn: 'root'
  })
  // 用作http 請求響應(yīng)的攔截器
  export class MyhttpInterceptorServiceService implements HttpInterceptor {
   constructor() { }
   intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
     // 請求前處理,可以加上 head 的token 如果需要
     //console.log('Request:', req.url);
     console.log('Request:=======請求前的處理=========' + req.url);
     if (!req.headers.has('Authorization')) {
       req = req.clone({
         setHeaders: {
           Authorization: 'Bearer ' + localStorage.getItem('logininfo')
         }
       });
       console.log("請求頭新增token 成功 Authorization-----------");
     } else {
       console.log("已經(jīng)存在token,不需要新增");
     }
     // 發(fā)送請求,并且在響應(yīng)上做文章
     return next.handle(req).pipe(
       tap(
         event => {
           if (event instanceof HttpResponse) {
             // 成功響應(yīng)時的處理
             //console.log('Response:', event.status);
             console.log('Response:====成功響應(yīng)的處理============');
           }
         },
         error => {
           // 錯誤響應(yīng)時的處理
           //console.error('Error:', error.message);
           console.error('Error', '=======error msg=========');
         }
       )
     );
   }
 }

3:配置到根模塊中 app.module.ts

 import { NgModule } from '@angular/core';
  import { BrowserModule } from '@angular/platform-browser';
  import { AppRoutingModule } from './app-routing.module';
  import { AppComponent } from './app.component';
  import { HomeComponent } from './components/home/home.component';
  import { TopComponent } from './components/top/top.component';
  import { MenuComponent } from './components/menu/menu.component';
  import { ProductComponent } from './components/product/product.component';
 //primeng
 import {ButtonModule} from 'primeng/button';
 import { FormsModule } from '@angular/forms';
 import {CalendarModule} from 'primeng/calendar';
 import {BrowserAnimationsModule} from '@angular/platform-browser/animations';
 import {PanelMenuModule} from 'primeng/panelmenu';
 import { BodyComponent } from './components/body/body.component';
 import {TableModule} from 'primeng/table'
 import {InputTextModule} from 'primeng/inputtext';
 import {MessageModule} from 'primeng/message';
 import {ToastModule} from 'primeng/toast';
 import { TranslateModule,TranslateLoader } from '@ngx-translate/core';
 import { HttpClient, HttpClientModule } from '@angular/common/http';
 import { TranslateHttpLoader } from '@ngx-translate/http-loader';
 import { MydialogComponent } from './components/mydialog/mydialog.component';
 import { MybooksComponent } from './components/mybooks/mybooks.component';
 import { StudentComponent } from './components/student/student.component';
 import { TeacherComponent } from './components/teacher/teacher.component';
 import { WelcomeComponent } from './components/welcome/welcome.component';
 import { LoginComponent } from './components/login/login.component';
 //HttpClientModule, HTTP_INTERCEPTORS -----攔截器的導(dǎo)入
 import { HTTP_INTERCEPTORS } from '@angular/common/http';
 import { MyhttpInterceptorServiceService } from './services/myhttp-interceptor-service.service';
 export function HttpLoaderFactory(http: HttpClient) {
   return new TranslateHttpLoader(http,'../assets/i18n/',".json");
 }
 @NgModule({
   declarations: [
     AppComponent,
     HomeComponent,
     TopComponent,
     MenuComponent,
    ProductComponent,
     BodyComponent,
     MydialogComponent,
    MybooksComponent,
     StudentComponent,
     TeacherComponent,
     WelcomeComponent,
     LoginComponent
  ],
   imports: [
     BrowserModule,
     AppRoutingModule,
     BrowserAnimationsModule,
     ButtonModule,
     FormsModule,
     CalendarModule,
     PanelMenuModule,
     TableModule,
     InputTextModule,
    MessageModule,
    ToastModule,
 HttpClientModule,TranslateModule.forRoot({
  loader: {
     provide: TranslateLoader,
     useFactory: HttpLoaderFactory,
     deps: [HttpClient]
   }
 })
   ],
   providers: [{
     provide: HTTP_INTERCEPTORS,   //---------------
     useClass: MyhttpInterceptorServiceService,
     multi: true   // 注意這里設(shè)置為true,因為可以有多個攔截器
   }],
   bootstrap: [AppComponent]
})
export class AppModule { }
//重點如下配置:HttpClientModule, HTTP_INTERCEPTORS 攔截器的導(dǎo)入
import { HTTP_INTERCEPTORS } from '@angular/common/http';
import { MyhttpInterceptorServiceService } from './services/myhttp-interceptor-service.service';
  providers: [{
    provide: HTTP_INTERCEPTORS,
    useClass: MyhttpInterceptorServiceService,
    multi: true   // 注意這里設(shè)置為true,因為可以有多個攔截器
  }],

4:在組件中測試使用

<p>student works! 請求接口獲取到用戶名稱為:{{userName}}</p>
import { Component, OnInit } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Injectable } from '@angular/core';
@Component({
  selector: 'app-student',
  templateUrl: './student.component.html',
  styleUrl: './student.component.scss'
})
export class StudentComponent implements OnInit {
  userName: string;
  constructor(private http: HttpClient) {
    this.userName = "";
  }
  ngOnInit(): void {
    this.http.get('http://www.baidu.com:4200/gateway/basic/accounts/getUserAcountList?ntid=3793831').pipe().subscribe((data?: any) => {
      console.log(data);
      this.userName = data.data[0].name;
    })
  }
}

5:測試效果

到此這篇關(guān)于Angular項目簡單使用攔截器 httpClient 請求響應(yīng)處理的文章就介紹到這了,更多相關(guān)Angular攔截器 httpClient內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Angular中ng-template和ng-container的應(yīng)用小結(jié)

    Angular中ng-template和ng-container的應(yīng)用小結(jié)

    Angular的日常工作中經(jīng)常會使用到ng-template和ng-container,本文對他們做一個總結(jié),本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2022-06-06
  • 初學(xué)者AngularJS的環(huán)境搭建過程

    初學(xué)者AngularJS的環(huán)境搭建過程

    這篇文章主要介紹了初學(xué)者AngularJS的環(huán)境搭建過程,在文章給大家提到了Angular-cli的特性,大家一起看看吧
    2017-10-10
  • js常用正則表達(dá)式集錦

    js常用正則表達(dá)式集錦

    這篇文章主要介紹了js常用正則表達(dá)式集錦,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-05-05
  • 使用AngularJS對表單提交內(nèi)容進(jìn)行驗證的操作方法

    使用AngularJS對表單提交內(nèi)容進(jìn)行驗證的操作方法

    AngularJS是一款優(yōu)秀的前端JS框架,已經(jīng)被用于Google的多款產(chǎn)品當(dāng)中。下面通過本文給大家分享使用AngularJS對表單提交內(nèi)容進(jìn)行驗證的操作方法,需要的的朋友參考下吧
    2017-07-07
  • angularjs的select使用及默認(rèn)選中設(shè)置

    angularjs的select使用及默認(rèn)選中設(shè)置

    本篇文章主要介紹了angularjs的select使用及默認(rèn)選中設(shè)置,非常具有實用價值,需要的朋友可以參考下
    2017-04-04
  • Angular?模塊封裝概念常見的錯誤分析理解

    Angular?模塊封裝概念常見的錯誤分析理解

    這篇文章主要為大家介紹了Angular模塊封裝概念常見的錯誤分析理解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • AngularJS HTML DOM詳解及示例代碼

    AngularJS HTML DOM詳解及示例代碼

    本文主要介紹AngularJS HTML DOM基礎(chǔ)知識,這里整理了相關(guān)資料和示例代碼進(jìn)行詳解,有需要的小伙伴可以參考下
    2016-08-08
  • AngularJS 前臺分頁實現(xiàn)的示例代碼

    AngularJS 前臺分頁實現(xiàn)的示例代碼

    本篇文章主要介紹了AngularJS 前臺分頁實現(xiàn)的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-06-06
  • 如何以Angular的姿勢打開Font-Awesome詳解

    如何以Angular的姿勢打開Font-Awesome詳解

    這篇文章主要給大家介紹了關(guān)于如何以Angular的姿勢打開Font-Awesome的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Angular具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-04-04
  • 詳解angularjs 關(guān)于ui-router分層使用

    詳解angularjs 關(guān)于ui-router分層使用

    本篇文章主要介紹了詳解angularjs 關(guān)于ui-router分層使用,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06

最新評論

和龙市| 山阳县| 多伦县| 当阳市| 永福县| 长宁县| 云安县| 新泰市| 柞水县| 葵青区| 六枝特区| 达尔| 乳山市| 马龙县| 长治县| 瓮安县| 广丰县| 太原市| 揭阳市| 禄丰县| 永泰县| 香港| 连南| 永吉县| 绥滨县| 河北省| 太仆寺旗| 潼关县| 杂多县| 托克托县| 新河县| 内乡县| 米易县| 手游| 秦皇岛市| 耿马| 南华县| 新野县| 怀来县| 夏河县| 巴东县|