Облачная платформаEvolution

Создание шлюза API из файла спецификации в API Gateway


С помощью этого руководства вы научитесь создавать API-шлюз на основе OpenAPI-спецификации с собственными расширениями x-cloud.

Вы будете использовать сервис Evolution API Gateway для создания API-шлюзов и политик маршрутизации с авторизацией пользователей из сети общего пользования.

Шаги:

1. Подготовьте спецификацию API-шлюза

Спецификация содержит расширения, которые начинаются с префикса x-cloud. Разные расширения x-cloud-<название расширения> могут объявляться на разных уровнях спецификации (root, path, operation).

  1. Скопируйте пример спецификации простого шлюза в любой текстовый редактор:

    openapi: 3.0.0
    info:
    version: 1.0.0
    title: Test
    paths:
    /test-mock-1:
    get:
    operationId: getDemo1
    x-cloud-mock:
    $ref: "#/components/x-cloud-mocks/GetMock"
    /test-mock-2:
    get:
    operationId: getDemo2
    x-cloud-mock:
    $ref: "#/components/x-cloud-mocks/GetMock"
    components:
    x-cloud-mocks:
    GetMock:
    content_type: "application/json"
    delay: 1
    response_status: 200
    response_example: '{"status": "Success GET"}'

    При загрузке этой спецификации будет создан шлюз типа Mock API с двумя правилами getDemo1 и getDemo2. Оба правила имеют политику с одинаковыми параметрами, описанными в секции components.

    Согласно параметрам политики при обращении к шлюзу будет возвращаться ответ 200 с задержкой в 1 секунду.

  2. Сохраните файл в формате YAML или JSON, например, test-demo-apigw.json.

2. Создайте API-шлюз на основе спецификации

  1. В личном кабинете перейдите в Разработка → API Gateway.

  2. Откройте раздел Shared.

  3. Нажмите Создать шлюз.

  4. Заполните поле Название шлюза.

  5. Выберите шаблон шлюза Open API.

  6. Перетащите YAML-файл или JSON-файл со спецификацией шлюза в OpenAPI, например, test-demo-apigw.json, в область загрузки.

  7. Нажмите Создать.

Шлюз будет создан автоматически на основе спецификации.

Системный домен шлюза назначается автоматически при создании и недоступен для редактирования.

3. Добавьте правило с общим бэкендом и одним стандартным узлом бэкенда

  1. В личном кабинете перейдите в Разработка → API Gateway.

  2. Откройте раздел Shared.

  3. Откройте API-шлюз, созданный на шаге 2.

  4. На вкладке Информация в области Спецификация добавьте следующий фрагмент спецификации к уже имеющейся:

paths:
/test-limit-count:
get:
operationId: getDemo3
x-cloud-backend:
$ref: "#/components/x-cloud-upstreams/HttpBackend"
x-cloud-limit-count:
count: 10
time_window: 5
rejected_code: 429
components:
x-cloud-backends:
HttpBackend:
name: Http_Backend
description: TestDescription
type: url
scheme: https
nodes:
- host: example.com
weight: 1
timeout:
connect: 3
send: 3
read: 3

При сохранении этой спецификации в шлюзе будет добавлено правило со следующими параметрами:

  • частный стандартный бэкенд с одним узлом бэкенда example.com;

  • таймауты бэкенда: 3 секунды на соединение, отправку и получение запросов;

  • политика «Ограничение запросов». Если количество запросов за 5 секунд превышает 10, запрос отклоняется. При отклонении запроса отправляется код 429.

    Если в спецификации есть ошибки, они будут подсвечены красным. Исправьте ошибки.

  1. Нажмите Применить спецификацию и подтвердите применение.

  2. Перейдите на вкладку Правила.

    В шлюзе появилось новое правило getDemo3 с общим бэкендом Http_Backend и политикой «Ограничение запросов».

Результат

Вы создали новый API-шлюз на основе расширений x-cloud и добавили несколько правил с разными параметрами.