Files
api-gateway/Техническое задание для AI-агента.md
T
2025-09-14 13:07:54 +05:00

4.2 KiB
Raw Blame History

Техническое задание для AI-агента (Версия 2.0)

Задача: Настроить Spring Cloud Gateway с маршрутом по умолчанию (fallback).

Контекст: Необходимо обновить конфигурацию API Gateway. Теперь все запросы, которые не соответствуют ни одному из конкретных правил (например, для /api/parser/**), должны автоматически перенаправляться на core-service. Это делает core-service основным API, а остальные сервисы — расширениями для него.


Основные требования

  1. Маршрутизация для parser-service:

    • Все запросы, начинающиеся с /api/parser/**, должны перенаправляться на http://parser-service:8080.
    • Этот маршрут должен иметь высокий приоритет, чтобы он проверялся первым.
  2. Маршрутизация по умолчанию для 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) остаются без изменений

Объяснение логики

  1. Когда на Gateway приходит запрос, например, GET /api/parser/items, он сначала проверяет маршрут с order: 1.
  2. Запрос совпадает с Path=/api/parser/**, поэтому он отправляется на parser-service.
  3. Когда приходит любой другой запрос, например GET /users/profile, он не совпадает с маршрутом для парсера.
  4. Gateway продолжает проверку и находит маршрут с order: 100.
  5. Этот маршрут совпадает с Path=/** (любой путь), и запрос уходит на core-service.

Критерии выполнения

  • Запросы на /api/parser/... успешно уходят на parser-service.
  • Все остальные запросы (например, /auth/login, /products, /anything-else) успешно уходят на core-service.