Вы очень много задали три вопроса, и все они до некоторой степени связаны, поэтому я буду стараться изо всех сил, чтобы решить все три вместе.
Во-первых, запрос маршрутизации в шлюзе API - это больше, чем просто прокси-сервер, и реализация не будет включать условия для проверки запроса перед его отправкой в нисходящую службу. API-шлюз, скорее всего, будет единственной точкой входа в ваши службы, в которой на уровне защиты также будет выполняться проверка подлинности, чтобы обеспечить, чтобы запрос имел разрешение перейти к нисходящей службе. Аутентификация, вероятно, будет другой службой. Высокоуровневая реализация шлюза API, скорее всего, консолидирует большинство, если не все конечные точки, во всех последующих службах.
Давайте рассмотрим небольшой пример, например приложение электронной коммерции, которое включает в себя службу для перечисления продуктов, поиска продуктов и тележек для покупок. Шлюз API также будет иметь эти же конечные точки и будет делегировать запрос дополнительно службе, отвечающей за запрос. API в этом примере может содержать /products
, чтобы перечислить все продукты, /products?query=...
для поиска продуктов и, наконец, /carts/:id/products
, чтобы перечислить продукты в корзине. Надеюсь, что это ответ на ваш вопрос.
Кроме того, я знаю, что вы упомянули о своем новом проекте и хотели бы дать вам 2 цента, что это не лучшая архитектура для вашего нового проекта, если ваша команда действительно маленькая, потому что есть большие эксплуатационные накладные расходы. Накладные расходы, требующие стандартизации, автоматизации развертывания, интеграции и т. Д. Его, вероятно, лучше всего начать с традиционной архитектуры MVC и медленно развивать ее до микросервисов при удалении проекта.
API-шлюз действует как безопасный прокси-сервер + протоколирование. Вы можете передать URL-адрес своей службе «продукт», к которой вы хотите получить доступ, и шлюз проксирует ее. – sed