Использование Angular HttpClient в приложении AngularJS - PullRequest
0 голосов
/ 07 января 2020

У меня есть и AngularJS приложение, которое в настоящее время использует предоставленный сервис $http для отправки запросов. Я также установил некоторые значения по умолчанию и привязал некоторые перехватчики к этим запросам. Я создаю свое приложение как библиотеку с использованием веб-пакета, так что я получаю один javascript файл, который экспортирует функцию конструктора, которая создает экземпляр моего приложения.

Мое AngularJS приложение теперь будет встроен в приложение Angular 8, которое вызывает конструктор моего приложения с соответствующими параметрами. Одним из параметров является также HttpClient экземпляр службы, который мое приложение должно использовать вместо $http, который сейчас используется.

Теперь я хотел бы сделать минимальное изменение кода в моем приложении, чтобы используйте предоставленную службу HTTP вместо встроенной службы $http.

Я думал о написании класса адаптера для экземпляра HttpClient, который будет иметь подпись, аналогичную AngularJS '$http, но реализую только те функции, которые мне нужны. Я не уверен, что это правильный способ решения этой проблемы .

Адаптер внутренне использовал бы предоставленный HttpClient для выполнения запросов, а также проходил через перехватчики запросов / ответов, чтобы заставить его вести себя так, как будто мое приложение все еще использует сервис $http и не мешает внешнему приложению Angular. Я бы зарегистрировал своего провайдера адаптеров под тем же именем, которое использует AngularJS ($httpProvider), что означает, что я буквально перезаписываю существующий, так что все мои страницы, которые в настоящее время используют сервис $http, теперь будут использовать мой экземпляр службы адаптера. Это означает, что я бы реализовал как провайдер, так и классы обслуживания, чтобы это работало. Хорошая вещь при регистрации провайдера под тем же именем состоит в том, что мой существующий код, который получает сервис $http от DI, сохранил бы свой код, как сейчас. При правильной реализации не должно быть никаких дополнительных изменений в существующей кодовой базе.

Кроме адаптера, у меня нет других идей, как сделать это наименее сложным способом, если я не изменю все свои $http звонки с чем-то другим, которые будут вести себя как положено, и запускать перехватчики.

Примечание Это может показаться вопросом, открытым для обсуждения, но я приму ответ, который будет казаться лучший для моих требований (наименее сложный для реализации с возможностью минимального изменения кода).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...