API testing: course
API Gateway (шлюз)

Що таке API-шлюз (API Gateway)?
API Gateway – це посередник між клієнтом (користувачем або сервісом) і бекенд-сервісами. Він приймає запити, перевіряє їх, маршрутизує до потрібного сервісу, обробляє відповіді та відправляє їх назад клієнту.
Що це?
- Єдина точка входу – клієнти не взаємодіють напряму з мікросервісами.
- Безпека – перевірка аутентифікації та авторизації. Тут важливо! доволі часто API Gateway виконує саме функцію аутентифікації та авторизації а не на самому дочірньому сервісі
- Кешування – зменшення навантаження на сервери.
- Балансування навантаження – рівномірний розподіл трафіку.
- Перетворення запитів – API Gateway може конвертувати формат даних. наприклад: API Gateway може конвертувати формат даних між gRPC(тут тільки бінарні дані юзаються) та REST (або іншими протоколами), що робить можливим використання gRPC-сервісів клієнтами, які підтримують тільки HTTP/JSON.
Як це працює з gRPC?
API Gateway може виступати як проксі-сервер, який:
- Приймає RESTful HTTP-запити (JSON).
- Перетворює їх у gRPC-запити.
- Відправляє їх до gRPC-сервісу.
- Отримує відповідь у gRPC.
- Перетворює відповідь у JSON і надсилає клієнту.

Як це працює?
- Клієнт відправляє запит до API Gateway.
- API Gateway перевіряє запит (аутентифікація, кеш, політики доступу).
- API Gateway пересилає запит до відповідного бекенд-сервісу.
- Отримує відповідь, обробляє її та повертає клієнту.
Приклад роботи API Gateway
Уявімо, що у нас є інтернет-магазин, і ми хочемо отримати дані про користувачів та їхні замовлення. У нас є два мікросервіси:
- 
User Service– зберігає інформацію про користувачів.
- 
Order Service– зберігає інформацію про замовлення.
Клієнту потрібно отримати дані про користувача разом із його замовленнями.
Без API Gateway:
Клієнт робить два окремі запити:
GET https://api.shop.com/users/123
GET https://api.shop.com/orders?userId=123Відповідь збирається на клієнті.
З API Gateway:
Клієнт робить один запит:
GET https://api.shop.com/user-orders/123API Gateway виконує два запити до мікросервісів, об'єднує їх і повертає єдину відповідь.
Приклад API Gateway на AWS API Gateway
1. Запит від клієнта
GET https://api.example.com/user-orders/123Відповідь:
GET https://users-service/api/users/1232. API Gateway виконує два запити:
{
  "id": "123",
  "name": "Bohdan"
}Відповідь:
GET https://orders-service/api/orders?userId=123{
  "orders": [
    { "id": "1", "total": 100 },
    { "id": "2", "total": 250 }
  ]
}3. Після цього API Gateway об'єднує ці дві відповіді та відправляє клієнту єдиний JSON:
Відповідь:
{
  "user": {
    "id": "123",
    "name": "Bohdan"
  },
  "orders": [
    { "id": "1", "total": 100 },
    { "id": "2", "total": 250 }
  ]
}АБО!
Клієнт звертається через API Gateway, але об'єднання робить сам. У цьому випадку API Gateway лише проксує запити до відповідних сервісів, але не об'єднує їх.
📌 Що тут робить API Gateway?
- Виконує автентифікацію (JWT, API Key).
- Контролює Rate Limiting (обмеження запитів).
- Виступає єдиною точкою входу (https://api.example.com замість декількох URL).
Тестування
Тестування API Gateway включає кілька рівнів: функціональне тестування, навантажувальне тестування, безпекове тестування, тестування логування та моніторингу.
1. Функціональне тестування
2. Тестування безпеки
3. Навантажувальне
4. Моніторинг та логування
тут все те саме що в API сервісів нижче проте API Gateway та мікросервіси виконують різні ролі, тому їхнє тестування окремо дозволяє виявити проблеми на різних рівнях.
API Gateway не відповідає за бізнес-логіку - він лише маршрутизує запити, застосовує кешування, обробляє помилки, проводить аутентифікацію. Логіка та обробка даних відбувається у сервісах.
Локалізація помилок: якщо тестувати тільки API Gateway, важко зрозуміти, чи проблема у маршрутизації чи в бекенді. Тут досліджуємо! і записуємо хто за що відповідає
тут дуже прям класно проводити інтеграційне тестування (API Gateway + мікросервіси)
Після тестування окремо, треба перевірити спільну роботу API Gateway та сервісів.
👉 Чи правильно API Gateway маршрутизує запити?
👉 Чи не змінюється структура даних при проксуванні?
👉 Чи правильно працює аутентифікація?
Тому
🤌 Мікросервіси тестуємо окремо: їхню логіку, роботу з БД, API-контракти
🤌 API Gateway тестуємо окремо: маршрутизацію, кешування, безпеку
🤌 Разом тестуємо інтеграцію: чи правильно API Gateway передає та об'єднує дані
API gateway
By iravol
API gateway
- 131
 
   
   
  