angular HttpClientModule

本文档详细介绍了Angular的HttpClient模块的使用,包括GET、POST、DELETE、PUT等常用方法,以及如何设置请求头、响应体和使用拦截器进行全局请求处理。示例展示了参数传递、HttpParams的使用,以及如何在拦截器中处理token。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

说明

就是对ajax的类似封装

常用方法

this.http.get(url,[,options])
this.http.post(url,data,[,options])
this.http.delete(url,[,options])
this.http.put(url,,data,[,options])

传参

通过HttpParams传参

export declare class HttpParams{
  constructor(options?:HttpParamsOptions);
  has(param:string):boolean;
  get(param:string):string|null;
  getAll(param:string):string|null;
  keys():string[];
  append(param:string,value:string):HttpParam;
  set(param:string,value:string):HttpParam;
  delete(param:string,value:string):HttpParam;
  toString():string;
}

HttpParamsOptions

declare interface HttpParamsOptions{
 fromString?:string;
 fromObject?:{
	[param:string]string|ReadonlyArray<string>
};
 encoder?:HttpParamterCode
}

示例

    var url1 = "https://api.seniverse.com/v3/weather/daily.json?key=SCYrvkytJze9qyzOh1&location=beijing&language=zh-Hans&unit=c"
    var url2 = "https://api.seniverse.com/v3/weather/daily.json"
    var obj = {
      key: "SCYrvkytJze9qyzOh1",
      location: 'beijing',
      language: 'zh-Hans',
      unit:'c'
    }
    this.http.post(url2, {
      params: obj
    }).subscribe(data => {
      debugger
      console.log(data)
    })

上面的是简写,也可以用HttpParams

设置请求头

let headers = new HttpHeaders({
	test:"hello world"
});
this.http.get(url,{headers}).subscribe()

设置响应体

this.http.get(url,{observe:'body'|'response'})

拦截器

全局捕获请求和响应,只能捕捉httpClientModule,用AJAX就捕捉不到

import { Injectable } from '@angular/core';
import {
  HttpRequest,
  HttpHandler,
  HttpEvent,
  HttpInterceptor
} from '@angular/common/http';
import { catchError, Observable, retry, throwError } from 'rxjs';

@Injectable()
export class CommonAjaxInterceptor implements HttpInterceptor {

  constructor() {}

  intercept(request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> {
    debugger;
    //写一些业务逻辑,包括token的处理啊什么的
    let req = request.clone({
      setHeaders: {
        token:"token"
      }
    })

    return next.handle(req).pipe(retry(3),catchError(err=>throwError(err))) 
  }
}

在appModule中需要注入

  providers: [TestService, {
    provide: HTTP_INTERCEPTORS,
    useClass: CommonAjaxInterceptor,
    multi:true
  }],
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李卓书

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值