返回顶部
首页 > 资讯 > 前端开发 > VUE >angular的HttpClientModule模块如何使用
  • 642
分享到

angular的HttpClientModule模块如何使用

2024-04-02 19:04:59 642人浏览 安东尼
摘要

这篇文章主要介绍“angular的HttpClientModule模块如何使用”,在日常操作中,相信很多人在angular的HttpClientModule模块如何使用问题上存在疑惑,小编查阅了各式资料,整

这篇文章主要介绍“angularHttpClientModule模块如何使用”,在日常操作中,相信很多人在angular的HttpClientModule模块如何使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”angular的HttpClientModule模块如何使用”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

angular的HttpClientModule模块如何使用

该模块用于发送 Http 请求,用于发送请求的方法都返回 Observable 对象。

1、快速开始

1)、引入 HttpClientModule 模块

// app.module.ts
import { httpClientModule } from '@angular/common/http';
imports: [
  httpClientModule
]

2)、注入 HttpClient 服务实例对象,用于发送请求

// app.component.ts
import { HttpClient } from '@angular/common/http';

export class AppComponent {
	constructor(private http: HttpClient) {}
}

3)、发送请求

import { HttpClient } from "@angular/common/http"

export class AppComponent implements OnInit {
  constructor(private http: HttpClient) {}
  nGonInit() {
    this.getUsers().subscribe(console.log)
  }
  getUsers() {
    return this.http.get("https://JSONplaceholder.typicode.com/users")
  }
}

2、请求方法

this.http.get(url [, options]);
this.http.post(url, data [, options]);
this.http.delete(url [, options]);
this.http.put(url, data [, options]);
this.http.get<Post[]>('/getAllPosts')
  .subscribe(response => console.log(response))

3、请求参数

1、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): HttpParams;
    set(param: string, value: string): HttpParams;
    delete(param: string, value?: string): HttpParams;
    toString(): string;
}

2、HttpParamsOptions 接口

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

3、使用示例

import { HttpParams } from '@angular/common/http';

let params = new HttpParams({ fromObject: {name: "zhangsan", age: "20"}})
params = params.append("sex", "male")
let params = new HttpParams({ fromString: "name=zhangsan&age=20"})

4、请求头

请求头字段的创建需要使用 HttpHeaders 类,在类实例对象下面有各种操作请求头的方法。

export declare class HttpHeaders {
    constructor(headers?: string | {
        [name: string]: string | string[];
    });
    has(name: string): boolean;
    get(name: string): string | null;
    keys(): string[];
    getAll(name: string): string[] | null;
    append(name: string, value: string | string[]): HttpHeaders;
    set(name: string, value: string | string[]): HttpHeaders;
    delete(name: string, value?: string | string[]): HttpHeaders;
}
let headers = new HttpHeaders({ test: "Hello" })

5、响应内容

declare type HttpObserve = 'body' | 'response';
// response 读取完整响应体
// body 读取服务器端返回的数据
this.http.get(
  "https://jsonplaceholder.typicode.com/users", 
  { observe: "body" }
).subscribe(console.log)

6、拦截器

拦截器是 Angular 应用中全局捕获和修改 HTTP 请求和响应的方式。(Token、Error)

拦截器将只拦截使用 HttpClientModule 模块发出的请求。

ng g interceptor <name>

angular的HttpClientModule模块如何使用
angular的HttpClientModule模块如何使用

6.1 请求拦截

@Injectable()
export class AuthInterceptor implements HttpInterceptor {
  constructor() {}
	// 拦截方法
  intercept(
  	// unknown 指定请求体 (body) 的类型
    request: HttpRequest<unknown>,
    next: HttpHandler
     // unknown 指定响应内容 (body) 的类型
  ): Observable<HttpEvent<unknown>> {
    // 克隆并修改请求头
    const req = request.clone({
      setHeaders: {
        Authorization: "Bearer xxxxxxx"
      }
    })
    // 通过回调函数将修改后的请求头回传给应用
    return next.handle(req)
  }
}

6.2 响应拦截

@Injectable()
export class AuthInterceptor implements HttpInterceptor {
  constructor() {}
	// 拦截方法
  intercept(
    request: HttpRequest<unknown>,
    next: HttpHandler
  ): Observable<any> {
    return next.handle(request).pipe(
      retry(2),
      catchError((error: HttpErrorResponse) => throwError(error))
    )
  }
}

6.3 拦截器注入

import { AuthInterceptor } from "./auth.interceptor"
import { HTTP_INTERCEPTORS } from "@angular/common/http"

@NgModule({
  providers: [
    {
      provide: HTTP_INTERCEPTORS,
      useClass: AuthInterceptor,
      multi: true
    }
  ]
})

7、Angular Proxy

1、在项目的根目录下创建 proxy.conf.json 文件并加入如下代码

{
 	"/api/*": {
    "target": "http://localhost:3070",
    "secure": false,
    "changeOrigin": true
  }
}
  • /api/*:在应用中发出的以 /api 开头的请求走此代理

  • target:服务器端 URL

  • secure:如果服务器端 URL 的协议是 https,此项需要为 true

  • changeOrigin:如果服务器端不是 localhost, 此项需要为 true

2、指定 proxy 配置文件 (方式一)

"scripts": {
  "start": "ng serve --proxy-config proxy.conf.json",
}

3、指定 proxy 配置文件 (方式二)

"serve": {
  "options": {
    "proxyConfig": "proxy.conf.json"
  },

到此,关于“angular的HttpClientModule模块如何使用”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: angular的HttpClientModule模块如何使用

本文链接: https://lsjlt.com/news/97870.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • angular的HttpClientModule模块如何使用
    这篇文章主要介绍“angular的HttpClientModule模块如何使用”,在日常操作中,相信很多人在angular的HttpClientModule模块如何使用问题上存在疑惑,小编查阅了各式资料,整...
    99+
    2024-04-02
  • Angular中如何使用HttpClientModule模块
    这篇文章主要介绍Angular中如何使用HttpClientModule模块,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!该模块用于发送 Http 请求,用于发送请求的方法都返回 O...
    99+
    2024-04-02
  • 如何使用路由延迟加载Angular模块
    这篇文章主要介绍了如何使用路由延迟加载Angular模块,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Angular 非常模块化,模块化的一...
    99+
    2024-04-02
  • Angular中http请求模块的使用方法
    这篇文章主要介绍了Angular中http请求模块的使用方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。首先模块引入import { BrowserMo...
    99+
    2023-06-06
  • Angular中NgModule模块和延迟加载模块的用法
    这篇文章主要介绍“Angular中NgModule模块和延迟加载模块的用法”,在日常操作中,相信很多人在Angular中NgModule模块和延迟加载模块的用法问题上存在疑惑,小编查阅了各式资料,整理出简单...
    99+
    2024-04-02
  • angular路由模块怎么用
    这篇文章主要讲解了“angular路由模块怎么用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“angular路由模块怎么用”吧!在 Angular 中,路由...
    99+
    2024-04-02
  • Perl如何使用模块
    这篇文章主要为大家展示了“Perl如何使用模块”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Perl如何使用模块”这篇文章吧。Perl模块1、创建Perl模块Perl5中用包来创建Perl模块,...
    99+
    2023-06-17
  • ECMAScript模块如何使用
    这篇“ECMAScript模块如何使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“ECMAScript模块如何使用”文章吧...
    99+
    2023-06-27
  • Angular根模块与特性模块的示例分析
    这篇文章主要介绍Angular根模块与特性模块的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!前提是安装了 Angular cli,以下的大部分文件创建都是依赖于cli提供的指令Angular中的特性模板和根...
    99+
    2023-06-14
  • Python的Schedule模块如何使用
    这篇“Python的Schedule模块如何使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Python的Schedule...
    99+
    2023-06-30
  • Node.js的Process模块如何使用
    这篇文章主要介绍了Node.js的Process模块如何使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Node.js的Process模块如何使用文章都会有所收获,下面我们一起来看看吧。一、Process模块...
    99+
    2023-07-02
  • python的argparse模块如何使用
    这篇文章主要介绍“python的argparse模块如何使用”,在日常操作中,相信很多人在python的argparse模块如何使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”python的argparse...
    99+
    2023-07-05
  • Apache的mod_rewrite模块如何使用
    Apache的mod_rewrite模块是一个强大的URL重写引擎,可以用来重写URL,从而实现URL的美化、重定向、防止恶意攻击等功能。 要使用mod_rewrite模块,首先需要确保该模块已经安装并启用。可以通过在终端中输入以下命令来检...
    99+
    2024-07-05
    apache
  • Angular中如何使用FormArray和模态框
    本篇内容介绍了“Angular中如何使用FormArray和模态框”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!业务场景使用FormArra...
    99+
    2023-07-04
  • node中http模块和url模块如何使用
    这篇“node中http模块和url模块如何使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这...
    99+
    2024-04-02
  • python如何使用import模块
    这篇文章给大家分享的是有关python如何使用import模块的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。import模块在Python经常使用import声明,以使用其他模块...
    99+
    2024-04-02
  • node path模块如何使用
    这篇文章主要讲解了“node path模块如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“node path模块如何使用”吧!path.resolve...
    99+
    2024-04-02
  • 如何使用python xml模块
    本篇内容主要讲解“如何使用python xml模块”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何使用python xml模块”吧!一、xml简介xml是实现不同语言或程序之间进行数据交换的协...
    99+
    2023-06-07
  • 如何使用Nodejs-cluster模块
    这篇文章主要为大家展示了“如何使用Nodejs-cluster模块”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何使用Nodejs-cluster模块”这篇文章吧。基本用法Node.js默认单...
    99+
    2023-06-22
  • python如何使用timeit模块
    这篇文章给大家分享的是有关python如何使用timeit模块的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。timeit模块timeit 模块提供了测量 Python 小段代码执行时间的方法,可以在命令行界面直接...
    99+
    2023-06-17
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作