我是靠谱客的博主 羞涩百合,这篇文章主要介绍angular学习之浅析HttpClientModule模块,现在分享给大家,希望可以做个参考。

本篇文章带大家了解一下angular中的HttpClientModule模块,介绍一下请求方法、请求参数、响应内容、拦截器、Angular Proxy等相关知识,希望对大家有所帮助!

该模块用于发送 Http 请求,用于发送请求的方法都返回 Observable 对象。【相关教程推荐:《angular教程》】

1、快速开始

1)、引入 HttpClientModule 模块

复制代码
1
2
3
4
5
// app.module.ts import { httpClientModule } from '@angular/common/http'; imports: [ httpClientModule ]
登录后复制

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

复制代码
1
2
3
4
5
6
// app.component.ts import { HttpClient } from '@angular/common/http'; export class AppComponent { constructor(private http: HttpClient) {} }
登录后复制

3)、发送请求

复制代码
1
2
3
4
5
6
7
8
9
10
11
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、请求方法

复制代码
1
2
3
4
this.http.get(url [, options]); this.http.post(url, data [, options]); this.http.delete(url [, options]); this.http.put(url, data [, options]);
登录后复制
复制代码
1
2
this.http.get<Post[]>('/getAllPosts') .subscribe(response => console.log(response))
登录后复制

3、请求参数

1、HttpParams 类

复制代码
1
2
3
4
5
6
7
8
9
10
11
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 接口

复制代码
1
2
3
4
5
6
7
declare interface HttpParamsOptions { fromString?: string; fromObject?: { [param: string]: string | ReadonlyArray<string>; }; encoder?: HttpParameterCodec; }
登录后复制

3、使用示例

复制代码
1
2
3
4
5
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 类,在类实例对象下面有各种操作请求头的方法。

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
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; }
登录后复制
复制代码
1
let headers = new HttpHeaders({ test: "Hello" })
登录后复制

5、响应内容

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

6、拦截器

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

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

ng g interceptor <name>

请添加图片描述
请添加图片描述

6.1 请求拦截

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
@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 响应拦截

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
@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 拦截器注入

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
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 文件并加入如下代码

复制代码
1
2
3
4
5
6
7
{ "/api/*": { "target": "http://localhost:3070", "secure": false, "changeOrigin": true } }
登录后复制
  • /api/*:在应用中发出的以 /api 开头的请求走此代理

  • target:服务器端 URL

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

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

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

复制代码
1
2
3
"scripts": { "start": "ng serve --proxy-config proxy.conf.json", }
登录后复制

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

复制代码
1
2
3
4
"serve": { "options": { "proxyConfig": "proxy.conf.json" },
登录后复制

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

最后

以上就是羞涩百合最近收集整理的关于angular学习之浅析HttpClientModule模块的全部内容,更多相关angular学习之浅析HttpClientModule模块内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(84)

评论列表共有 0 条评论

立即
投稿
返回
顶部