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