

# Criar rotas para APIs HTTP no API Gateway
<a name="http-api-develop-routes"></a>

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
<a name="http-api-routes-path-variables"></a>

É 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
<a name="http-api-routes-query-string-parameters"></a>

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 name="http-api-develop-routes.default"></a>

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](http-api-develop-integrations-http.md).

## Rotear solicitações de API
<a name="http-api-develop-routes.evaluation"></a>

Quando um cliente envia uma solicitação de API, o API Gateway primeiro determina para qual [estágio](https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-stages.html) 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.

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

1. 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`

1. `GET /pets/dog/{id}`

1. `GET /pets/{proxy+}`

1. `ANY /{proxy+}`

1. `$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`.  | 