4.2 KiB
4.2 KiB
Техническое задание для AI-агента (Версия 2.0)
Задача: Настроить Spring Cloud Gateway с маршрутом по умолчанию (fallback).
Контекст: Необходимо обновить конфигурацию API Gateway. Теперь все запросы, которые не соответствуют ни одному из конкретных правил (например, для /api/parser/**), должны автоматически перенаправляться на core-service. Это делает core-service основным API, а остальные сервисы — расширениями для него.
Основные требования
-
Маршрутизация для
parser-service:- Все запросы, начинающиеся с
/api/parser/**, должны перенаправляться наhttp://parser-service:8080. - Этот маршрут должен иметь высокий приоритет, чтобы он проверялся первым.
- Все запросы, начинающиеся с
-
Маршрутизация по умолчанию для
core-service:- Любой другой запрос, не подошедший под правило выше, должен перенаправляться на
http://core-service:8080. - Этот маршрут должен иметь самый низкий приоритет, чтобы он срабатывал только в том случае, если ни один другой маршрут не подошел.
- Префикс
/api/core/больше не нужен, так какcore-serviceтеперь обрабатывает все остальные пути.
- Любой другой запрос, не подошедший под правило выше, должен перенаправляться на
Реализация и конфигурация
Для реализации этого поведения необходимо использовать свойство order в конфигурации маршрутов. Чем меньше значение order, тем выше приоритет.
Обновите файл application.yml следующим образом:
server:
port: 80 # Стандартный HTTP порт для шлюза
spring:
application:
name: api-gateway
cloud:
gateway:
routes:
# Маршрут для сервиса Parser (ВЫСОКИЙ ПРИОРИТЕТ)
- id: parser-service
uri: http://parser-service:8080
predicates:
- Path=/api/parser/**
filters:
- StripPrefix=2 # Убираем /api/parser
order: 1 # <-- Высокий приоритет
# Маршрут по умолчанию для Core сервиса (НИЗКИЙ ПРИОРИТЕТ)
- id: core-service-fallback
uri: http://core-service:8080
predicates:
- Path=/** # <-- Матчится со всеми путями
order: 100 # <-- Низкий приоритет (сработает последним)
# ... остальные настройки (CORS, logging) остаются без изменений
Объяснение логики
- Когда на Gateway приходит запрос, например,
GET /api/parser/items, он сначала проверяет маршрут сorder: 1. - Запрос совпадает с
Path=/api/parser/**, поэтому он отправляется наparser-service. - Когда приходит любой другой запрос, например
GET /users/profile, он не совпадает с маршрутом для парсера. - Gateway продолжает проверку и находит маршрут с
order: 100. - Этот маршрут совпадает с
Path=/**(любой путь), и запрос уходит наcore-service.
Критерии выполнения
- Запросы на
/api/parser/...успешно уходят наparser-service. - Все остальные запросы (например,
/auth/login,/products,/anything-else) успешно уходят наcore-service.