Расширения спецификации API Gateway. Обзор
Расширение x-yc-apigateway
Расширение x-yc-apigateway
позволяет задать верхнеуровневые параметры API-шлюза, значения которых будут наследоваться вложенными расширениями.
Поддерживаемые параметры
В таблице ниже перечислены параметры, специфичные для API-шлюза сервиса API Gateway. Описание остальных параметров читайте в спецификации OpenAPI 3.0
Параметр | Тип | Описание |
---|---|---|
serviceAccountId |
string |
Идентификатор сервисного аккаунта, от имени которого API-шлюз будет выполнять операции. |
validator |
ValidatorObject |
Валидатор HTTP-запросов и ответов или ссылка на него. Может быть переопределен на уровне конкретной операции. |
cors |
CorsRuleObject |
Правило обработки preflight-запросов CORS или ссылка на него. Может быть переопределено на уровне конкретного пути. |
rateLimit |
RateLimitObject |
Ограничение скорости обработки запросов или ссылка на него. Может быть переопределено на уровне конкретного пути и/или операции. |
ignoreTrailingSlashes |
boolean |
Если установлено значение true , API Gateway игнорирует слеш (/ ) в конце URL запроса, иначе — учитывает его наличие или отсутствие при поиске обработчика в OpenAPI-спецификации. Значение по умолчанию — true . |
securityProfileId |
string |
Идентификатор профиля безопасности Smart Web Security. |
Спецификация расширения
x-yc-apigateway:
service_account_id: <идентификатор_сервисного_аккаунта>
validator: <ValidatorObject_или_ссылка_на_него>
cors: <CorsRuleObject_или_ссылка_на_него>
rateLimit: <RateLimitObject_или_ссылка_на_него>
ignoreTrailingSlashes: <true_или_false>
smartWebSecurity:
securityProfileId: <идентификатор_профиля_безопасности>
Расширение x-yc-apigateway-integration
Расширение x-yc-apigateway-integration
— это точка входа для интеграции API-шлюза с другими сервисами.
Поддерживаемые параметры
В таблице ниже перечислены параметры, специфичные для API-шлюза сервиса API Gateway. Описание остальных параметров читайте в спецификации OpenAPI 3.0
Параметр | Тип | Описание |
---|---|---|
type |
string |
Тип расширения. Доступные значения: dummy , cloud_functions , http , object_storage , cloud_datasphere , cloud_datastreams , serverless_containers , cloud_ymq и cloud_ydb . |
Спецификация расширения
<запрос>:
<метод>:
x-yc-apigateway-integration:
type: <тип>
<список параметров в виде пары ключ: значение>
Содержимое расширения меняется в зависимости от указанного типа (type
) в блоке x-yc-apigateway-integration
:
- dummy — возвращает фиксированное содержимое с указанным кодом ответа и необходимыми заголовками без участия стороннего сервиса.
- cloud_functions — вызывает указанную функцию, передавая ей на вход информацию об HTTP-запросе, и возвращает клиенту результат выполнения этой функции.
- http — перенаправляет запрос в указанный URL.
- object_storage — передает обработку запроса в Object Storage с целью раздачи статических файлов.
- cloud_datasphere — вызывает указанную ноду DataSphere, передавая ей тело запроса со значениями входных переменных, и возвращает результат выполнения ноды в теле ответа.
- cloud_datastreams — обращается к Yandex Data Streams для выполнения операции с указанным потоком.
- serverless_containers — перенаправляет запрос в указанный контейнер.
- cloud_ymq — обращается к Yandex Message Queue для выполнения операции с указанной очередью.
- cloud_ydb — обращается к Yandex Managed Service for YDB для выполнения операции с указанной документной таблицей.
Все типы поддерживают подстановку параметров — замену всех ключей на соответствующее значение. Ключ должен быть определен как параметр соответствующей операции (допускаются все типы параметров, определенные в OpenAPI-Specificationpath
, query
, header
, cookie
).
Подстановка параметров производится только в некоторых значениях, в зависимости от типа расширения.
Расширение components:x-yc-apigateway-integrations
Расширение x-yc-apigateway-integrations
позволяет указывать интеграцию в стандартной секции components$ref
в расширении x-yc-apigateway-integration
.
Спецификация расширения
Пример спецификации расширения:
openapi: 3.0.0
info:
title: Sample API
version: 1.0.0
x-yc-apigateway:
variables:
handler:
default: "#/components/x-yc-apigateway-integrations/BaseGetDefault"
enum:
- "#/components/x-yc-apigateway-integrations/BaseGetDefault"
- "#/components/x-yc-apigateway-integrations/BaseGetUnimplemented"
paths:
/:
get:
x-yc-apigateway-integration:
$ref: "${var.handler}"
components:
x-yc-apigateway-integrations:
BaseGetDefault:
type: cloud_functions
function_id: b095c95icnvb********
tag: "$latest"
service_account_id: ajehfe84hhl********
BaseGetUnimplemented:
type: dummy
content:
'*': Sorry, endpoint is not implemented yet.
http_code: 501
http_headers:
Content-Type: text/plain
Расширение x-yc-status-mapping
Расширение x-yc-status-mapping позволяет заменить код ответа в интеграции.
Спецификация расширения
paths:
/:
<метод>:
responses:
<код_ответа>:
description: ""
content:
...
x-yc-status-mapping: <новый_код_ответа>
...
Расширение x-yc-schema-mapping
Расширение x-yc-schema-mapping позволяет преобразовывать JSON-тело запроса к интеграции или ответа от нее.
Спецификация расширения
x-yc-schema-mapping:
type:static
template:
<название_поля>: "<значение_поля>"
...