Angular никогда не отображает URL в контроллер пружины. На самом деле приложение Angular, запущенное в браузере, ничего не знает о службах, развернутых где-то на сервере.
HttpClientModule
ничего не знает о вещах на стороне сервера. Он не знает, отправляете ли вы запрос на api/login
url, он должен перейти на LoginController
или что-то еще.
Добавляя запись, как показано в вопросе, внутри proxy.conf.json
, все, что вы делаете, это настраиваете конфигурацию для перенаправления вызова, чтобы избежать каких-либо проблем CORS
.
Таким образом, HTTPClientModule
делает вызов API, угловое приложение проверяет, настроен ли прокси-сервер, если это вызов, выполняемый для цели прокси-сервера, если нет, выполняется вызов по предоставленному URL-адресу.
Теперь службы, развернутые на proxy target
, входят в картину:
Когда вызывается API-интерфейс, он сначала достигает базового URL-адреса служб: /api/
- это путь, определенный в вашем приложении: spring.data.rest.basePath=/api
.
Spring Boot по умолчанию использует Apache Tomcat, поэтому каждый HTTP-запрос, отправляемый на веб-сервер Tomcat, обрабатывается сервлетом Java.
Пружина DispatcherServlet
обеспечивает следующие функции:
- отображение HTTP-запроса на определенный метод обработки
- парсинг данных и заголовков HTTP-запросов в объекты передачи данных (DTO) или объекты домена
- взаимодействие модель-вид-контроллер
- генерация ответов от DTO, доменных объектов и т. Д.
DispatcherServlet : Центральный диспетчер для обработчиков / контроллеров HTTP-запросов, например для контроллеров веб-интерфейса или экспортеров удаленных услуг на основе HTTP. Отправляет зарегистрированным обработчикам для обработки веб-запроса, предоставляя удобные средства отображения и обработки исключений.
Это сердце инфраструктуры Spring Web MVC; этот основной компонент получает все запросы к вашему приложению. Чтобы найти обработчик, соответствующий запросу, Spring просматривает зарегистрированные реализации интерфейса HandlerMapping