Вступ та Архітектура
MirApi Gateway — це заголовково-керований API-проксі, що розміщується між вашим додатком та будь-яким стороннім API. Вказавши запити на https://proxy.mirapi.io/ і додавши HTTP-заголовки, ви отримуєте автоматичні повтори, smart-кешування, каскадне перемикання, нульове логування, захист PCI-DSS тощо — без жодних змін у логіці інтеграції.
Як це працює
Section titled “Як це працює”Ваш Додаток → MirApi Gateway → Upstream API(s) ↕ Перевірка Auth (X-MirApi-Key) PCI-DSS Guard (Luhn-сканування) Idempotency Lock (Redis SETNX) Resilience Engine (Retry / Circuit Breaker / Cache / Failover) Очищення заголовків (X-* прибираються перед upstream)Шлюз перехоплює кожен запит, перевіряє ваш API-ключ, сканує на наявність даних карток, застосовує правила надійності та пересилає запит до upstream API з видаленими внутрішніми проксі-заголовками.
Огляд архітектури
Section titled “Огляд архітектури”Цикл запиту
Section titled “Цикл запиту”Кожен вхідний запит проходить цей фіксований конвеєр по порядку:
-
Автентифікація — Перевіряється заголовок
X-MirApi-Keyчерез кеш Redis (пошук SHA-256 хешу). Якщо відсутній або недійсний — повертається401 Unauthorized. -
PCI-DSS Guard — Сирий текст тіла запиту сканується на послідовності 13–16 цифр, що проходять алгоритм Луна. Якщо виявлено сирий номер картки — запит блокується з
400 Bad Request. Тіло ніколи не записується в логи. -
Перевірка Idempotency — Зчитується заголовок
X-Proxy-Idempotency-Key. Якщо відсутній — шлюз автоматично обчислює ключ:SHA256(ClientID + TargetURL + Method + Body). Ключ блокується в Redis на 60 секунд черезSETNX. Паралельні дублікати запитів чекають завершення першого, потім отримують ту саму відповідь. -
Рішення маршрутизації — Шлюз перевіряє
X-Route-Key(маршрут з бази даних) абоX-Target-URL(прямий проксі). Якщо жоден не вказаний — повертається400 Bad Request. -
Перевірка Async — Якщо присутній
X-Webhook-Callback, завдання поміщається у чергу Redis і повертається202 Accepted. Фоновий воркер виконує операцію з повною логікою повторів. -
Конвеєр надійності — Для синхронних запитів:
- Circuit Breaker (
X-Circuit-Breaker: on): Якщо контур OPEN для цільового хоста — запит блокується, якщо немає Smart Cache. - Retry Loop (
X-Retry-Count): Невдалі запити повторюються з експоненціальним backoff + jitter (до 10 секунд на затримку). - Failover URL (
X-Failover-URL): Якщо всі повтори провалились — запит пересилається на резервний ендпоінт. - Smart Cache (
X-Smart-Cache): Якщо upstream все ще не відповідає — повертається остання кешована успішна відповідь зX-Rescued: cache.
- Circuit Breaker (
-
Очищення заголовків — Перед пересиланням upstream всі
X-Target-*,X-Retry-*,X-MirApi-*,X-Proxy-*,X-Smart-*,X-Failover-*,X-Identity-*,X-Webhook-*,X-Extract-*та інші внутрішні заголовки видаляються. Upstream ніколи не бачить проксі-заголовків. -
Ін’єкція секретів — Якщо встановлено
X-Identity-Key— його значення ін’єктується в заголовокAuthorization. Якщо встановленоX-Proxy-Master-Key— шлюз розшифровує відповідні облікові дані з бази і ін’єктує якAuthorization. -
Відповідь — Відповідь upstream (заголовки + тіло) повертається вашому додатку як є. Якщо запит був врятований повтором, кешем, failover або каскадною маршрутизацією — додається заголовок
X-Rescued: <reason>.
Заголовок відповіді
Section titled “Заголовок відповіді”Коли запит врятовано одним із механізмів відмовостійкості, MirApi додає заголовок відповіді:
| Заголовок | Значення | Опис |
|---|---|---|
X-Rescued | retry, cache, failover, cascade_fallback | Вказує, як запит був врятований. Присутній лише при рятуванні. |
Підтримувані випадки використання
Section titled “Підтримувані випадки використання”MirApi Gateway працює з будь-яким HTTP API:
- Платіжні системи: Stripe, PayPal, Adyen — захист платежів від повторного виконання без idempotency
- AI/ML провайдери: OpenAI, Anthropic, Groq — каскад між провайдерами при rate-limiting
- Комунікація: Twilio, SendGrid — гарантована доставка повідомлень через retry
- Банківські API: Plaid, Open Banking — Smart Cache для курсів валют і каталогів
Наступні кроки
Section titled “Наступні кроки”→ Дотримуйтесь Посібника швидкого старту, щоб зробити перший стійкий запит.