In diesem Artikel lernen Sie das HttpClientModule-Modul in Angular kennen und stellen die Anforderungsmethode, Anforderungsparameter, Antwortinhalte, Interceptoren, Angular Proxy und andere verwandte Kenntnisse vor.
Dieses Modul wird zum Senden von Http -Anfragen verwendet, und die zum Senden von Anfragen verwendeten Methoden geben Observable Objekte zurück. [Empfohlene verwandte Tutorials: „Angular-Tutorial“]
1), stellen Sie das HttpClientModule-Modul vor
// app.module.ts
import { httpClientModule } from '@angular/common/http';
Importe: [
httpClientModule
]2) Fügen Sie das HttpClient-Dienstinstanzobjekt zum Senden von Anforderungen ein
// app.component.ts
import { HttpClient } from '@angular/common/http';
Exportklasse AppComponent {
Konstruktor (privater http: HttpClient) {}
}3), Anfrage senden
importiere { HttpClient } aus „@angular/common/http“
Die Exportklasse AppComponent implementiert OnInit {
Konstruktor (privater http: HttpClient) {}
ngOnInit() {
this.getUsers().subscribe(console.log)
}
getUsers() {
return this.http.get("https://jsonplaceholder.typicode.com/users")
}
}this.http.get(url [, Optionen]); this.http.post(url, data [, Optionen]); this.http.delete(url [, Optionen]); this.http.put(url, data [, Optionen]);
this.http.get<Post[]>('/getAllPosts')
.subscribe(response => console.log(response))1. HttpParams-Klasse
Export-Deklarationsklasse HttpParams {
Konstruktor(optionen?: HttpParamsOptions);
has(param: string): boolean;
get(param: string): string |.
getAll(param: string): string[] |.
Schlüssel(): string[];
append(param: string, value: string): HttpParams;
set(param: string, value: string): HttpParams;
delete(param: string, value?: string): HttpParams;
toString(): string;
}2. HttpParamsOptions-Schnittstelle
Deklarieren Sie die Schnittstelle HttpParamsOptions {
fromString?: string;
fromObject?: {
[param: string]: string |. ReadonlyArray<string>;
};
Encoder?: HttpParameterCodec;
}3. Anwendungsbeispiele
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"})Die Erstellung von Anforderungsheaderfeldern erfordert die Verwendung der Klasse HttpHeaders. Es gibt verschiedene Methoden zum Bearbeiten von Anforderungsheadern unter dem Klasseninstanzobjekt.
Export-Deklarationsklasse HttpHeaders {
Konstruktor(Header?: string | {
[Name: Zeichenfolge]: Zeichenfolge |. Zeichenfolge[];
});
has(name: string): boolean;
get(name: string): string |. null;
Schlüssel(): string[];
getAll(name: string): string[] |.
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" })deklarieren Sie den Typ HttpObserve = 'body' |. // Antwort liest den vollständigen Antworttext. // Text liest die vom Server zurückgegebenen Daten
this.http.get(
„https://jsonplaceholder.typicode.com/users“,
{ beobachten: „Körper“ }
).subscribe(console.log)Interceptoren sind eine Möglichkeit, HTTP-Anfragen und -Antworten in Angular-Anwendungen global zu erfassen und zu ändern. (Token, Fehler)
Der Interceptor fängt nur Anfragen ab, die mit dem HttpClientModule-Modul gestellt werden.
ng g interceptor <name>


6.1 Abfangen anfordern
@Injectable()
Die Exportklasse AuthInterceptor implementiert HttpInterceptor {
Konstruktor() {}
//Abfangmethode abfangen(
// unbekannt gibt den Typ des Anforderungskörpers (body) an: HttpRequest<unknown>,
Weiter: HttpHandler
// unbekannt gibt den Typ des Antwortinhalts (Körper) an): Observable<HttpEvent<unknown>> {
// Klonen und ändern Sie den Anforderungsheader const req = request.clone({
setHeaders: {
Autorisierung: „Bearer xxxxxxx“
}
})
// Den geänderten Anforderungsheader über die Rückruffunktion an die Anwendung zurückgeben return next.handle(req)
}
}6.2 Abfangen von Antworten
@Injectable()
Die Exportklasse AuthInterceptor implementiert HttpInterceptor {
Konstruktor() {}
//Abfangmethode abfangen(
Anfrage: HttpRequest<unbekannt>,
Weiter: HttpHandler
): Observable<any> {
return next.handle(request).pipe(
erneut versuchen(2),
CatchError((error: HttpErrorResponse) => throwError(error))
)
}
}6.3 Interceptor-Injektion
importiere { AuthInterceptor } aus „./auth.interceptor“
{ HTTP_INTERCEPTORS } aus „@angular/common/http“ importieren
@NgModule({
Anbieter: [
{
bereitstellen: HTTP_INTERCEPTORS,
useClass: AuthInterceptor,
multi: wahr
}
]
})1. Erstellen Sie die Datei „proxy.conf.json“ im Stammverzeichnis des Projekts und fügen Sie den folgenden Code hinzu
{
"/api/*": {
„target“: „http://localhost:3070“,
„sicher“: falsch,
„changeOrigin“: wahr
}
}/api/*: Anfragen, die in der Anwendung mit /api beginnen, werden über diesen Proxy geleitet
Ziel: serverseitige URL
sicher: Wenn das Protokoll der serverseitigen URL https ist, muss dieses Element wahr sein
changeOrigin: Wenn der Server nicht localhost ist, muss dieses Element wahr sein
2. Proxy-Konfigurationsdatei angeben (Methode 1)
"Skripte": {
„start“: „ng Serve --proxy-config Proxy.conf.json“,
}3. Proxy-Konfigurationsdatei angeben (Methode 2)
"Aufschlag": {
"Optionen": {
„proxyConfig“: „proxy.conf.json“
}, Dieses Modul wird zum Senden von Http -Anfragen verwendet, und die zum Senden von Anfragen verwendeten Methoden geben Observable Objekte zurück.