Эта статья поможет вам понять модуль HttpClientModule в Angular, а также познакомит вас с методом запроса, параметрами запроса, содержимым ответа, перехватчиками, прокси-сервером Angular и другими связанными знаниями. Надеюсь, это будет вам полезно!
Этот модуль используется для отправки Http запросов, а методы, используемые для отправки запросов, возвращают объекты Observable . [Рекомендуемые связанные учебные пособия: «учебник по Angular»]
1), представьте модуль HttpClientModule.
// приложение.модуль.ts
импортировать { httpClientModule } из @angular/common/http;
импорт: [
httpClientModule
]2) Внедрить объект экземпляра службы HttpClient для отправки запросов.
// приложение.компонент.ts
импортировать { HttpClient } из @angular/common/http;
класс экспорта AppComponent {
конструктор (частный http: HttpClient) {}
}3), отправить запрос
импортировать { HttpClient } из "@angular/common/http"
класс экспорта AppComponent реализует OnInit {
конструктор (частный http: HttpClient) {}
ngOnInit() {
this.getUsers().subscribe(console.log)
}
getUsers() {
верните это.http.get("https://jsonplaceholder.typicode.com/users")
}
}this.http.get(url [, параметры]); this.http.post(url, data [, options]); this.http.delete(url [, параметры]); this.http.put(url, данные [, параметры]);
this.http.get<Post[]>('/getAllPosts')
.subscribe(ответ => console.log(ответ))1. Класс HttpParams
экспорт объявить класс HttpParams {
конструктор (опции?: HttpParamsOptions);
has(param: string): логическое значение;
get(param: string): строка null;
getAll (параметр: строка): строка [] ноль;
ключи(): строка[];
добавление (параметр: строка, значение: строка): HttpParams;
set(param: string, value: string): HttpParams;
delete (параметр: строка, значение?: строка): HttpParams;
toString(): строка;
}2. Интерфейс HttpParamsOptions.
объявить интерфейс HttpParamsOptions {
fromString?: строка;
изОбъекта?: {
[параметр: строка]: строка | ReadonlyArray<строка>;
};
кодер?: HttpParameterCodec;
}3. Примеры использования
импортировать { HttpParams } из @angular/common/http;
let params = new HttpParams({ fromObject: {name: "zhangsan", age: "20"}})
params = params.append("секс", "мужской")
let params = new HttpParams({fromString: "name=zhangsan&age=20"})Для создания полей заголовка запроса требуется использование класса HttpHeaders. Существуют различные методы управления заголовками запросов в объекте экземпляра класса.
экспорт объявить класс HttpHeaders {
конструктор(заголовки?: строка | {
[имя: строка]: строка | строка[];
});
has(name: string): логическое значение;
получить (имя: строка): строка ноль;
ключи(): строка[];
getAll (имя: строка): строка [] ноль;
Append(имя: строка, значение: строка | строка[]): HttpHeaders;
set(имя: строка, значение: строка | строка[]): HttpHeaders;
delete (имя: строка, значение?: строка | строка []): HttpHeaders;
} let headers = new HttpHeaders({test: "Hello" })объявить тип HttpObserve = «тело» | // ответ считывает все тело ответа // тело считывает данные, возвращенные сервером
это.http.get(
"https://jsonplaceholder.typicode.com/users",
{ обратите внимание: "тело" }
).subscribe(console.log)Перехватчики — это способ глобального захвата и изменения HTTP-запросов и ответов в приложениях Angular. (Токен, Ошибка)
Перехватчик будет перехватывать только запросы, сделанные с использованием модуля HttpClientModule.
ng g interceptor <name>


6.1 Перехват запроса
@Инъекционный()
класс экспорта AuthInterceptor реализует HttpInterceptor {
конструктор() {}
//Метод перехвата intercept(
//unknown указывает тип тела запроса (body) request: HttpRequest<unknown>,
следующий: HttpHandler
// неизвестное указывает тип содержимого ответа (тело)): Observable<HttpEvent<unknown>> {
// Клонируем и изменяем заголовок запроса const req = request.clone({
setHeaders: {
Авторизация: «На предъявителя xxxxxxx».
}
})
// Передаем измененный заголовок запроса обратно в приложение через функцию обратного вызова return next.handle(req)
}
}6.2 Перехват ответа
@Инъекционный()
класс экспорта AuthInterceptor реализует HttpInterceptor {
конструктор() {}
//Метод перехвата intercept(
запрос: HttpRequest<неизвестно>,
следующий: HttpHandler
): Observable<любой> {
вернуть следующий.handle(запрос).pipe(
повторить попытку(2),
catchError((ошибка: HttpErrorResponse) => throwError(ошибка))
)
}
}6.3 Внедрение перехватчика
импортировать { AuthInterceptor } из "./auth.interceptor"
импортировать { HTTP_INTERCEPTORS } из "@angular/common/http"
@NgModule({
провайдеры: [
{
предоставить: HTTP_INTERCEPTORS,
useClass: AuthInterceptor,
мульти: правда
}
]
})1. Создайте файл proxy.conf.json в корневом каталоге проекта и добавьте следующий код.
{
"/api/*": {
"target": "http://localhost:3070",
«безопасный»: ложь,
«changeOrigin»: правда
}
}/api/*: запросы, начинающиеся с /api, сделанные в приложении, проходят через этот прокси.
цель: URL-адрес на стороне сервера
безопасный: если протокол URL-адреса на стороне сервера — https, этот элемент должен иметь значение true.
ChangeOrigin: если сервер не является локальным, этот элемент должен иметь значение true.
2. Укажите файл конфигурации прокси (способ 1).
"скрипты": {
"start": "ng submit --proxy-config proxy.conf.json",
}3. Укажите файл конфигурации прокси (способ 2)
"служить": {
"параметры": {
"proxyConfig": "proxy.conf.json"
}, Этот модуль используется для отправки Http запросов, а методы, используемые для отправки запросов, возвращают объекты Observable .