С помощью этого руководства вы научитесь создавать API-шлюз на основе OpenAPI-спецификации с собственными расширениями x-cloud.
Вы будете использовать сервис Evolution API Gateway для создания API-шлюзов и политик маршрутизации с авторизацией пользователей из сети общего пользования.
Шаги:
Спецификация содержит расширения, которые начинаются с префикса x-cloud. Разные расширения x-cloud-<название расширения> могут объявляться на разных уровнях спецификации (root, path, operation).
Скопируйте пример спецификации простого шлюза в любой текстовый редактор:
openapi: 3.0.0info:version: 1.0.0title: Testpaths:/test-mock-1:get:operationId: getDemo1x-cloud-mock:$ref: "#/components/x-cloud-mocks/GetMock"/test-mock-2:get:operationId: getDemo2x-cloud-mock:$ref: "#/components/x-cloud-mocks/GetMock"components:x-cloud-mocks:GetMock:content_type: "application/json"delay: 1response_status: 200response_example: '{"status": "Success GET"}'
При загрузке этой спецификации будет создан шлюз типа Mock API с двумя правилами getDemo1 и getDemo2. Оба правила имеют политику с одинаковыми параметрами, описанными в секции components.
Согласно параметрам политики при обращении к шлюзу будет возвращаться ответ 200 с задержкой в 1 секунду.
Сохраните файл в формате YAML или JSON, например, test-demo-apigw.json.
В личном кабинете перейдите в Разработка → API Gateway.
Откройте раздел Shared.
Нажмите Создать шлюз.
Заполните поле Название шлюза.
Выберите шаблон шлюза Open API.
Перетащите YAML-файл или JSON-файл со спецификацией шлюза в OpenAPI, например, test-demo-apigw.json, в область загрузки.
Нажмите Создать.
Шлюз будет создан автоматически на основе спецификации.
Системный домен шлюза назначается автоматически при создании и недоступен для редактирования.
В личном кабинете перейдите в Разработка → API Gateway.
Откройте раздел Shared.
Откройте API-шлюз, созданный на шаге 2.
На вкладке Информация в области Спецификация добавьте следующий фрагмент спецификации к уже имеющейся:
paths:/test-limit-count:get:operationId: getDemo3x-cloud-backend:$ref: "#/components/x-cloud-upstreams/HttpBackend"x-cloud-limit-count:count: 10time_window: 5rejected_code: 429components:x-cloud-backends:HttpBackend:name: Http_Backenddescription: TestDescriptiontype: urlscheme: httpsnodes:- host: example.comweight: 1timeout:connect: 3send: 3read: 3При сохранении этой спецификации в шлюзе будет добавлено правило со следующими параметрами:
частный стандартный бэкенд с одним узлом бэкенда example.com;
таймауты бэкенда: 3 секунды на соединение, отправку и получение запросов;
политика «Ограничение запросов». Если количество запросов за 5 секунд превышает 10, запрос отклоняется. При отклонении запроса отправляется код 429.
Если в спецификации есть ошибки, они будут подсвечены красным. Исправьте ошибки.
Нажмите Применить спецификацию и подтвердите применение.
Перейдите на вкладку Правила.
В шлюзе появилось новое правило getDemo3 с общим бэкендом Http_Backend и политикой «Ограничение запросов».
Вы создали новый API-шлюз на основе расширений x-cloud и добавили несколько правил с разными параметрами.