Criar rotas para APIs HTTP no API Gateway - Amazon API Gateway

Criar rotas para APIs HTTP no API Gateway

Roteia solicitações diretas recebidas de API para recursos de backend. As rotas consistem em duas partes: um método HTTP e um caminho de recurso, por exemplo, GET /pets. É possível definir métodos HTTP específicos para a rota. Ou usar o método ANY para corresponder a todos os métodos não definidos para um recurso. Você pode criar uma rota $default que funciona como um catch-all para solicitações que não correspondem a nenhuma outra rota.

nota

O API Gateway decodifica parâmetros de solicitação codificados em URL antes de passá-los para integrações de back-end.

Trabalhar com variáveis de caminho

É possível usar variáveis de caminho em rotas de API HTTP.

Por exemplo, a rota GET /pets/{petID} captura uma solicitação GET que um cliente envia para https://api-id.execute-api.us-east-2.amazonaws.com/pets/6.

Uma variável de caminho voraz captura todos os recursos filho de uma rota. Para criar uma variável de caminho voraz, adicione + ao nome da variável, por exemplo, {proxy+}. O parâmetro de caminho voraz deve estar no final do caminho do recurso.

Trabalhar com parâmetros de string de consulta

Por padrão, o API Gateway enviará parâmetros de string de consulta para a integração de backend se eles estiverem incluídos em uma solicitação para uma API Gateway.

Por exemplo, quando um cliente envia uma solicitação para https://api-id.execute-api.us-east-2.amazonaws.com/pets?id=4&type=dog, os parâmetros de string de consulta ?id=4&type=dog são enviados para a integração.

Trabalhar com a rota $default

A rota $default captura solicitações que não correspondem explicitamente a outras rotas na API.

Quando a rota $default recebe uma solicitação, o API Gateway envia o caminho de solicitação completo para a integração. Por exemplo, é possível criar uma API com apenas uma rota $default e integrá-la ao método ANY com o endpoint do HTTP https://petstore-demo-endpoint.execute-api.com. Quando uma solicitação é enviada para https://api-id.execute-api.us-east-2.amazonaws.com/store/checkout, o API Gateway envia uma solicitação para https://petstore-demo-endpoint.execute-api.com/store/checkout.

Para saber mais sobre integrações HTTP, consulte Criar integrações de proxy HTTP para APIs HTTP.

Rotear solicitações de API

Quando um cliente envia uma solicitação de API, o API Gateway primeiro determina para qual estágio rotear a solicitação. Se a solicitação corresponder explicitamente a um estágio, o API Gateway enviará a solicitação para esse estágio. Se nenhum estágio corresponder totalmente à solicitação, o API Gateway enviará a solicitação para o estágio $default. Se não houver estágio $default, a API retornará {"message":"Not Found"} e não gerará logs do CloudWatch.

Depois de selecionar um estágio, o API Gateway seleciona uma rota. Ele seleciona a rota com a correspondência mais específica, usando as seguintes prioridades:

  1. Correspondência completa para uma rota e um método.

  2. Correspondência para uma rota e um método com uma variável de caminho voraz ({proxy+}).

  3. A rota $default.

Se nenhuma rota corresponder a uma solicitação, o API Gateway retornará {"message":"Not Found"} ao cliente.

Por exemplo, considere uma API com um estágio $default e as seguintes rotas de exemplo:

  1. GET /pets/dog/1

  2. GET /pets/dog/{id}

  3. GET /pets/{proxy+}

  4. ANY /{proxy+}

  5. $default

    A tabela a seguir resume como o API Gateway roteia solicitações para as rotas demonstrativas.

Solicitação Rota selecionada Explicação

GET https://api-id.execute-api.region.amazonaws.com/pets/dog/1

GET /pets/dog/1

A solicitação corresponde totalmente a esta rota estática.

GET https://api-id.execute-api.region.amazonaws.com/pets/dog/2

GET /pets/dog/{id}

A solicitação corresponde totalmente a essa rota.

GET https://api-id.execute-api.region.amazonaws.com/pets/cat/1

GET /pets/{proxy+}

A solicitação não corresponde totalmente a uma rota. A rota com um método GET e uma variável de caminho voraz captura essa solicitação.

POST https://api-id.execute-api.region.amazonaws.com/test/5

ANY /{proxy+}

O método ANY corresponde a todos os métodos não definidos para uma rota. Rotas com variáveis de caminho voraz têm prioridade mais alta que a rota $default.