

# Notas importantes do Amazon API Gateway
<a name="api-gateway-known-issues"></a>

A seção a seguir detalha as observações que podem afetar o uso do API Gateway.

**Topics**
+ [Observações importantes sobre o Amazon API Gateway para APIs HTTP](#api-gateway-known-issues-http-apis)
+ [Observações importantes do Amazon API Gateway para HTTP e APIs de WebSocket](#api-gateway-known-issues-http-and-websocket-apis)
+ [Notas importantes do Amazon API Gateway para APIs REST e WebSocket](#api-gateway-known-issues-rest-and-websocket-apis)
+ [Notas importantes do Amazon API Gateway para APIs WebSocket](#api-gateway-known-issues-websocket-apis)
+ [Notas importantes do Amazon API Gateway para APIs REST](#api-gateway-known-issues-rest-apis)

## Observações importantes sobre o Amazon API Gateway para APIs HTTP
<a name="api-gateway-known-issues-http-apis"></a>
+ As APIs HTTP convertem os cabeçalhos `X-Forwarded-*` de entrada em um cabeçalho `Forwarded` padrão e anexam o IP de saída, o host e o protocolo.
+ O API Gateway adicionará o cabeçalho Content-type à solicitação se não houver carga útil e o Content-Length for 0.

## Observações importantes do Amazon API Gateway para HTTP e APIs de WebSocket
<a name="api-gateway-known-issues-http-and-websocket-apis"></a>
+ O Signature Version 4a não é oficialmente compatível com o Amazon API Gateway para HTTP e APIs de WebSocket.

## Notas importantes do Amazon API Gateway para APIs REST e WebSocket
<a name="api-gateway-known-issues-rest-and-websocket-apis"></a>
+ O API Gateway não é compatível com o compartilhamento de um nome de domínio personalizado em APIs REST e WebSocket.
+ Nomes de estágio podem conter apenas caracteres alfanuméricos, hífens e sublinhados. O tamanho máximo é de 128 caracteres.
+ Os caminhos `/ping` e `/sping` são reservados para a verificação de integridade do serviço. O uso desses recursos em nível raiz da API com domínios personalizados não conseguirá produzir o resultado esperado.
+ No momento, o API Gateway limita os eventos de log a 1.024 bytes. Eventos de log maiores do que 1024 bytes, como corpos de solicitação e resposta, serão truncados pelo API Gateway antes do envio para o CloudWatch Logs.
+ Atualmente, as métricas do CloudWatch limitam os nomes e valores de dimensão a 255 caracteres XML válidos. (Para obter mais informações, consulte o [Guia do usuário do CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html#Dimension).) Os valores de dimensão são uma função de nomes definidos pelo usuário, incluindo o nome da API, o nome do rótulo (estágio) e o nome do recurso. Ao escolher esses nomes, tenha cuidado para não exceder os limites de métricas do CloudWatch.
+ O tamanho máximo de um modelo de mapeamento é de 300 KB.

## Notas importantes do Amazon API Gateway para APIs WebSocket
<a name="api-gateway-known-issues-websocket-apis"></a>
+ O API Gateway é compatível com cargas de mensagem de até 128 KB com quadros no tamanho máximo de 32 KB. Se uma mensagem exceder 32 KB, é necessário dividi-la em vários quadros, cada qual contendo 32 KB ou menos. Se uma mensagem maior for recebida, a conexão será encerrada com o código 1009.

## Notas importantes do Amazon API Gateway para APIs REST
<a name="api-gateway-known-issues-rest-apis"></a>
+ O caractere pipe de texto simples (`|`) e o caractere de chave (`{` ou `}`) não podem ser usados em nenhuma solicitação de string de consulta de URL e devem ser codificados em URL.
+ O caractere ponto-e-vírgula (`;`) não tem suporte para nenhuma string de consulta de URL da solicitação e resulta nos dados divididos. 
+ As APIs REST decodificam parâmetros de solicitação codificados em URL antes de transmiti-los para integrações de back-end. Para parâmetros de solicitação UTF-8, as APIs REST decodificam os parâmetros, depois os transmitem como unicode para integrações de back-end. As APIs REST codificam em URL o caractere de porcentagem (`%`) antes de passá-lo para integrações de backend.
+ Ao usar o console do API Gateway para testar uma API, você pode obter a resposta “unknown endpoint errors” (erros de endpoint desconhecido) se um certificado autoassinado for apresentado ao backend, o certificado intermediário estiver ausente da cadeia de certificados ou qualquer outra exceção relacionada a certificados irreconhecíveis for lançada pelo backend.
+ Para uma entidade [https://docs.aws.amazon.com/apigateway/latest/api/API_Resource.html](https://docs.aws.amazon.com/apigateway/latest/api/API_Resource.html) ou [https://docs.aws.amazon.com/apigateway/latest/api/API_Method.html](https://docs.aws.amazon.com/apigateway/latest/api/API_Method.html) da API com integração privada, é necessário excluí-la depois de remover as referências codificadas permanentemente de um [https://docs.aws.amazon.com/apigateway/latest/api/API_VpcLink.html](https://docs.aws.amazon.com/apigateway/latest/api/API_VpcLink.html). Caso contrário, sua integração será suspensa e você receberá uma mensagem de erro informando que o link da VPC ainda está em uso, mesmo se a entidade `Resource` ou `Method` tiver sido excluída. Esse comportamento não se aplica quando a integração privada faz referência ao `VpcLink` por meio de uma variável de estágio.
+ Os backends a seguir podem não ser compatíveis com a autenticação de cliente SSL de uma forma que seja compatível com o API Gateway:
  + [NGINX](https://nginx.org/en/)
  +  [Heroku](https://www.heroku.com/)
+ O API Gateway é compatível com a maior parte da [especificação do OpenAPI 2.0](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/2.0.md) e da [especificação do OpenAPI 3.0](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.1.md), com as seguintes exceções:
  + Segmentos de caminho só podem conter caracteres alfanuméricos, sublinhados, hifens, pontos, vírgulas, dois-pontos e chaves. Parâmetros de caminho devem ser segmentos de caminho separados. Por exemplo, "resource/\$1path\$1parameter\$1name\$1" é válido; "resource\$1path\$1parameter\$1name\$1" não é.
  + Nomes de modelo podem conter apenas caracteres alfanuméricos.
  + Para parâmetros de entrada, somente os atributos a seguir são compatíveis: `name`, `in`, `required`, `type`, `description`. Outros atributos são ignorados.
  + Se usado, o tipo `securitySchemes` deverá ser `apiKey`. No entanto, OAuth 2 e autenticação básica HTTP são compatíveis por meio de [autorizadores do Lambda](apigateway-use-lambda-authorizer.md); a configuração do OpenAPI é obtida por meio de [extensões do fornecedor](api-gateway-swagger-extensions-authorizer.md). 
  + O campo `deprecated` não tem suporte e é descartado em APIs exportadas.
  + Os modelos do API Gateway são definidos usando [esquema JSON rascunho 4](https://datatracker.ietf.org/doc/html/draft-zyp-json-schema-04) em vez do esquema JSON usado pelo OpenAPI.
  + O parâmetro `discriminator` não tem suporte em nenhum objeto de esquema.
  + Não há suporte para a tag `example`.
  + Não há suporte para o campo `nullable`.
  + `exclusiveMinimum` não é compatível com o API Gateway.
  + As marcas `maxItems` e `minItems` não estão incluídas na [validação de solicitação simples](api-gateway-method-request-validation.md). Para resolver esse problema, atualize o modelo após a importação, antes de fazer a validação.
  + Com relação à OpenAPI 3.0, não é possível ter um `oneOf`, `anyOf` ou `allOf` que use `$ref` para uma definição dentro do mesmo esquema. Você pode inserir diretamente o esquema ou definir um recurso de modelo distinto do API Gateway. Para obter mais informações, consulte [Criar modelos mais complexos](models-mappings-models.md#api-gateway-request-validation-model-more-complex).
  + `oneOf` não é compatível com OpenAPI 2.0 ou a geração de SDK.
  + Não há suporte para o campo `readOnly`.
  + `$ref` não pode ser usado para referenciar outros arquivos.
  + Definições de resposta do formulário `"500": {"$ref": "#/responses/UnexpectedError"}` não têm suporte na raiz do documento do OpenAPI. Para contornar esse problema, substitua a referência pelo esquema embutido.
  + Não há suporte para números do tipo `Int32` ou `Int64`. Um exemplo é mostrado conforme a seguir:

    ```
    "elementId": {
        "description": "Working Element Id",
        "format": "int32",
        "type": "number"
    }
    ```
  + O tipo de formato de número decimal (`"format": "decimal"`) não tem suporte em uma definição de esquema.
  + Em respostas de método, a definição de esquema deve ser de um tipo de objeto e não pode ser de tipos primitivos. Por exemplo, não há suporte para `"schema": { "type": "string"}`. No entanto, você pode contornar esse problema usando o seguinte tipo de objeto:

    ```
    "schema": {
         "$ref": "#/definitions/StringResponse"
                }
    
     "definitions": {
        "StringResponse": {
          "type": "string"
        }
      }
    ```
  + O API Gateway não usa segurança no nível raiz definida na especificação do OpenAPI. Portanto, é necessário definir a segurança em um nível de operação a ser adequadamente aplicado.
  + A palavra-chave `default` não é compatível.
+ O API Gateway impõe as seguintes restrições e limitações ao lidar com métodos com a integração do Lambda ou a integração HTTP.
  + Os nomes de cabeçalho e parâmetros de consulta são processados em uma forma com distinção entre letras maiúsculas e minúsculas.
  + A tabela a seguir lista os cabeçalhos que podem ser descartados, remapeados ou modificados quando enviados ao seu endpoint de integração ou enviados de volta pelo seu endpoint de integração. Nesta tabela:
    + `Remapped` significa que o nome de cabeçalho é alterado de `<string>` para `X-Amzn-Remapped-<string>`.

      `Remapped Overwritten` significa que o nome de cabeçalho é alterado de `<string>` para `X-Amzn-Remapped-<string>` e o valor é substituído.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/apigateway/latest/developerguide/api-gateway-known-issues.html)

    \$1 O cabeçalho `Authorization` será descartado se contiver uma assinatura do [Signature versão 4](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-signing.html) ou se a autorização `AWS_IAM` for usada.
+ O SDK do Android de uma API gerada pelo API Gateway usa a classe `java.net.HttpURLConnection`. Essa classe lançará uma exceção sem tratamento, em dispositivos executando o Android 4.4 e anteriores, para uma resposta 401 resultante do remapeamento do cabeçalho `WWW-Authenticate` para `X-Amzn-Remapped-WWW-Authenticate`. 
+  Diferentemente dos SDKs Java, Android e iOS gerados pelo API Gateway de uma API, o SDK JavaScript de uma API gerada pelo API Gateway não é compatível com a novas tentativas para erros de nível 500. 
+  A invocação de teste de um método usa o tipo de conteúdo padrão de `application/json` e ignora especificações de todos os outros tipos de conteúdo. 
+ Ao enviar solicitações para uma API transmitindo o cabeçalho `X-HTTP-Method-Override`, o API Gateway substituirá o método. Portanto, para transmitir o cabeçalho ao backend, o cabeçalho precisa ser adicionado à solicitação de integração.
+  Quando uma solicitação contém vários tipos de mídia em seu cabeçalho `Accept`, o API Gateway apenas respeita o primeiro tipo de mídia `Accept`. Na situação em que você não pode controlar a ordem dos tipos de mídia de `Accept` e o tipo de mídia do seu conteúdo binário não é o primeiro da lista, é possível adicionar o primeiro tipo de mídia `Accept` na lista `binaryMediaTypes` da sua API, e o API Gateway retornará seu conteúdo como binário. Por exemplo, para enviar um arquivo JPEG usando um elemento `<img>` em um navegador, o navegador pode enviar `Accept:image/webp,image/*,*/*;q=0.8` em uma solicitação. Ao adicionar `image/webp` à lista, o endpoint `binaryMediaTypes` receberá o arquivo JPEG como binário. 
+ A personalização da resposta de gateway padrão para `413 REQUEST_TOO_LARGE` não é compatível no momento.
+ O API Gateway inclui um cabeçalho `Content-Type` para todas as respostas de integração. Por padrão, o tipo de conteúdo é `application/json`.