Какой из них использовать для создания фиктивного веб-сервиса для тестирования приложения Angular 4?
angular
angular-httpclient
angular2-http
Айюб Амини
источник
источник
Ответы:
Используйте
HttpClient
класс из,HttpClientModule
если вы используете Angular 4.3.x и выше:Это обновленная версия
http
от@angular/http
модуля со следующими улучшениями:Вы можете прочитать о том, как это работает, в руководстве Insider по перехватчикам и механике HttpClient в Angular .
В дальнейшем старый http-клиент будет устаревшим. Вот ссылки на сообщение о коммите и официальные документы .
Также обратите внимание, что старый http был введен с использованием
Http
токена класса вместо новогоHttpClient
:Кроме того, новое,
HttpClient
кажется, требуетtslib
во время выполнения, поэтому вы должны установить егоnpm i tslib
и обновить,system.config.js
если вы используетеSystemJS
:И вам нужно добавить еще одно сопоставление, если вы используете SystemJS:
источник
node_modules
папку и запуститьnpm install
снова'@angular/common/http': 'npm:@angular/common/bundles/common-http.umd.js',
Не хочу повторяться, а просто подвести итог другим способом (функции, добавленные в новый HttpClient):
Я написал статью, в которой рассказал о разнице между старым «http» и новым «HttpClient». Цель состояла в том, чтобы объяснить это как можно проще.
Просто о новом HttpClient в Angular
источник
Это хорошая справка, она помогла мне переключить мои запросы http на httpClient
https://blog.hackages.io/angular-http-httpclient-same-but-different-86a50bbcc450
Он сравнивает их с точки зрения различий и дает примеры кода.
Это всего лишь несколько различий, с которыми я столкнулся при изменении служб на httpclient в моем проекте (заимствуя из упомянутой мной статьи):
Импорт
Запрос и анализ ответа:
@ Угловое / HTTP
@ Угловое / общие / HTTP
Примечание: вам больше не нужно извлекать возвращаемые данные явно; по умолчанию, если возвращаемые данные относятся к типу JSON, вам не нужно делать ничего лишнего.
Но если вам нужно проанализировать любой другой тип ответа, например, текст или блоб, убедитесь, что вы добавили
responseType
в запрос. Вот так:Выполнение GET HTTP-запроса с
responseType
опцией:Добавление перехватчика
Я также использовал перехватчики для добавления токена для моей авторизации к каждому запросу:
Это хорошая ссылка: https://offering.solutions/blog/articles/2017/07/19/angular-2-new-http-interface-with-interceptors/
вот так:
Это довольно хорошее обновление!
источник
Есть библиотека, которая позволяет вам использовать HttpClient со строго типизированными обратными вызовами .
Данные и ошибка доступны непосредственно через эти обратные вызовы.
Когда вы используете HttpClient с Observable, вы должны использовать .subscribe (x => ...) в остальной части вашего кода.
Это потому, что Observable
HttpResponse
<<T
>> привязан к HttpResponse .Это плотно пара в http с остальным кодом .
Эта библиотека инкапсулирует .subscribe (x => ...) и предоставляет только данные и ошибки через ваши Модели.
При использовании строго типизированных обратных вызовов вам нужно иметь дело только с вашими моделями в остальной части кода.
Библиотека называется angular-extended-http-client .
библиотека angular-extended-http-client на GitHub
библиотека angular-extended-http-client в NPM
Очень прост в использовании.
Пример использования
Сильно типизированные обратные вызовы
Успех:
T
>T
>Неудача:
TError
>TError
>Добавить пакет в свой проект и в свой модуль приложения
и в импорте @NgModule
Ваши модели
Ваш Сервис
В вашей службе вы просто создаете параметры с этими типами обратного вызова.
Затем передайте их в метод get HttpClientExt .
Ваш Компонент
В вашем Компоненте ваш Сервис внедряется, а API getRaceInfo вызывается, как показано ниже.
И, ответ и ошибка возвращается в обратные вызовы являются строго типизированными. Например. ответ имеет тип RacingResponse, а ошибка - APIException .
Вы имеете дело только со своими моделями в этих строго типизированных обратных вызовах.
Следовательно, остальная часть вашего кода знает только о ваших моделях.
Кроме того, вы все еще можете использовать традиционный маршрут и вернуть Observable <
HttpResponse<
T>
> из Service API.источник
HttpClient - это новый API, поставляемый с 4.3, он обновил API с поддержкой событий прогресса, десериализацией json по умолчанию, перехватчиками и многими другими замечательными функциями. Подробнее здесь https://angular.io/guide/http
Http является более старым API и в конечном итоге будет устаревшим.
Поскольку их использование для базовых задач очень похоже, я бы посоветовал использовать HttpClient, поскольку это более современная и простая в использовании альтернатива.
источник