Limitações das funcionalidades da OpenAPI 3.x
Este documento descreve as limitações de funcionalidades para usar a OpenAPI 3.x com o API Gateway.
Para mais informações sobre as versões da especificação OpenAPI suportadas, consulte o artigo Vista geral da OpenAPI.
Novas limitações da OpenAPI 3.x
Esta secção descreve as limitações das novas funcionalidades no OpenAPI 3.x.
Servidores
O OpenAPI 3.x suporta vários objetos server para definir anfitriões e caminhos base. No entanto, o API Gateway baseia-se num único objeto de servidor, identificado pela extensão x-google-endpoint, para configurar o serviço.
Embora possa definir vários servidores, o API Gateway considera apenas o servidor que contém a extensão x-google-endpoint e permite apenas um servidor desse tipo. Para o API Gateway, não é necessário um URL do servidor, pelo que pode não ter servidores definidos ou ter um servidor com a extensão x-google-endpoint.
Por exemplo, as seguintes definições são válidas para o API Gateway:
servers:
- url: https://example.com
x-google-endpoint: {}
servers:
- url: https://example.com
x-google-endpoint: {}
- url: https://example2.com
A seguinte definição é inválida porque contém várias extensões x-google-endpoint:
servers:
- url: https://example.com
x-google-endpoint: {}
- url: https://example2.com
x-google-endpoint: {}
A seguinte definição é válida para o API Gateway, mas o API Gateway ignora o objeto do servidor:
servers:
- url: https://example.com
Servidores em vários ficheiros
Se carregar vários ficheiros OpenAPI e um ficheiro contiver um servidor com a extensão x-google-endpoint, todos os ficheiros também têm de ter um servidor definido com uma extensão x-google-endpoint idêntica e um anfitrião idêntico no URL do servidor. O caminho base pode ser diferente entre ficheiros.
URL relativo
Para o API Gateway, os URLs relativos no objeto servers são tratados como um caminho base por si só, porque não é necessário um nome de anfitrião na especificação. Isto é diferente do comportamento padrão da OpenAPI, que resolve os URLs relativos em relação ao servidor que aloja a definição da OpenAPI. Por exemplo, o API Gateway trata url: /v1 como um caminho base.
Os caminhos base têm de começar por "/". O API Gateway rejeita URLs que não tenham um esquema ou que comecem por "/" para indicar um caminho base.
Extensões não suportadas
O gateway da API não suporta a extensão x-google-allow para a OpenAPI 3.x.
Limites de tamanho de ficheiros
O API Gateway aplica um limite de tamanho total de 10 MB e um limite de contagem de ficheiros de 50 para ficheiros OpenAPI 3.x carregados.
Limitações pré-existentes
Esta secção descreve as limitações transferidas do OpenAPI 2.0 que também se aplicam ao OpenAPI 3.x.
Âmbitos ignorados
Embora o API Gateway aceite documentos OpenAPI com âmbitos definidos num objeto de esquema de segurança, o API Gateway não verifica nem aplica estes âmbitos.
Vários requisitos de segurança
- Requisitos da chave da API: o API Gateway não suporta requisitos de segurança alternativos (OR lógico) se um dos esquemas for uma chave da API. No entanto, o API Gateway suporta conjunções (AND lógico), o que lhe permite exigir uma chave da API e um token OAuth2.
- Requisitos do OAuth2: o API Gateway suporta requisitos de segurança alternativos (OR lógico) para diferentes esquemas de segurança do OAuth2. O API Gateway não suporta conjunções (AND lógico), a menos que o requisito de segurança adicional seja uma chave da API.
- Segurança opcional: pode usar um requisito de segurança vazio (
- {}) para tornar a segurança opcional para uma chave da API, mas o API Gateway não suporta esta opção para o OAuth.
Validação da definição de segurança
O API Gateway rejeita uma especificação OpenAPI 3.x que use um requisito de segurança sem uma definição correspondente na secção securityDefinitions.
Criação de modelos de caminhos de URLs
O API Gateway só suporta parâmetros de modelo de caminho de URL que representam segmentos de caminho completos, por exemplo, /items/{itemId}. O API Gateway não suporta nem rejeita parâmetros correspondentes a segmentos parciais, por exemplo, /items/prefix_{id}_suffix.
Parâmetros, esquemas, corpos de pedidos e tipos
O API Gateway aceita documentos OpenAPI com várias definições de parâmetros e tipos (por exemplo, required parâmetros e formatos de matriz), mas não os aplica. O Gateway da API encaminha os pedidos recebidos para a sua API, independentemente destas definições.
O API Gateway apenas suporta tipos primitivos nos parâmetros de pedido.
Referências de tipo externo
O API Gateway não suporta referências a tipos fora do documento OpenAPI facultado. Por exemplo, o Gateway da API não permite e rejeita um $ref que aponte para um URL externo.
Porta personalizada no endereço do anfitrião
O API Gateway não permite portas personalizadas no campo servers.url de um documento OpenAPI.
Limitações de alias do YAML
Um documento OpenAPI enviado para o API Gateway pode ter um máximo de 200 nós de alias YAML.