

# Creación de rutas para las API de HTTP en API Gateway
<a name="http-api-develop-routes"></a>

Las rutas dirigen las solicitudes entrantes de la API a los recursos de backend. Las rutas constan de dos partes: un método HTTP y una ruta de recurso, por ejemplo, `GET /pets`. Puede definir métodos HTTP específicos para su ruta. O bien, puede utilizar el método `ANY` para que coincida con todos los métodos que no haya definido para un recurso. Puede crear una ruta `$default` que actúe como método catch-all para las solicitudes que no coincidan con ninguna otra ruta.

**nota**  
API Gateway descodifica los parámetros de solicitud codificados con URL antes de pasarlos a las integraciones de backend.

## Trabajar con variables de ruta
<a name="http-api-routes-path-variables"></a>

Puede utilizar variables de ruta en rutas de API HTTP.

Por ejemplo, la ruta `GET /pets/{petID}` captura una solicitud `GET` que un cliente envía a `https://api-id.execute-api.us-east-2.amazonaws.com/pets/6`. 

Una *variable de ruta ambiciosa* captura todos los recursos secundarios de una ruta. Para crear una variable de ruta ambiciosa, agregue `+` al nombre de la variable, por ejemplo, `{proxy+}`. La variable de ruta expansiva debe estar al final de la ruta del recurso.

## Trabajar con parámetros de cadena de consulta
<a name="http-api-routes-query-string-parameters"></a>

De forma predeterminada, API Gateway envía parámetros de cadena de consulta a su integración de backend si se incluyen en una solicitud a una API HTTP.

Por ejemplo, cuando un cliente envía una solicitud a `https://api-id.execute-api.us-east-2.amazonaws.com/pets?id=4&type=dog`, los parámetros de cadena de consulta `?id=4&type=dog` se envían a su integración.

## Trabajar con la ruta `$default`
<a name="http-api-develop-routes.default"></a>

La ruta `$default` captura solicitudes que no coinciden explícitamente con otras rutas en su API.

Cuando la ruta `$default` recibe una solicitud, API Gateway envía la ruta de solicitud completa a la integración. Por ejemplo, puede crear una API con solo una ruta `$default` e integrarla en el método `ANY` con el punto de enlace HTTP `https://petstore-demo-endpoint.execute-api.com`. Cuando envía una solicitud a `https://api-id.execute-api.us-east-2.amazonaws.com/store/checkout`, API Gateway envía una solicitud a `https://petstore-demo-endpoint.execute-api.com/store/checkout`.

Para obtener más información acerca de las integraciones de HTTP, consulte [Uso de integraciones de proxy de HTTP para las API de HTTP](http-api-develop-integrations-http.md).

## Enrutamiento de solicitudes de la API
<a name="http-api-develop-routes.evaluation"></a>

Cuando un cliente envía una solicitud de la API, API Gateway primero determina hacia qué [etapa](https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-stages.html) dirigir la solicitud. Si la solicitud coincide explícitamente con una etapa, API Gateway envía la solicitud a esa etapa. Si ninguna etapa coincide completamente con la solicitud, API Gateway envía la solicitud a la etapa `$default`. Si no hay ninguna etapa `$default`, la API devuelve `{"message":"Not Found"}` y no genera registros de CloudWatch.

Después de seleccionar una etapa, API Gateway selecciona una ruta. API Gateway selecciona la ruta con la coincidencia más específica y aplica las siguientes prioridades:

1. Coincidencia completa para una ruta y método.

1. Haga coincidir una ruta y un método con una variable de ruta ambiciosa (`{proxy+}`).

1. La ruta `$default`.

Si ninguna ruta coincide con una solicitud, API Gateway devuelve `{"message":"Not Found"}` al cliente.

Por ejemplo, piense en una API con una etapa `$default` y las siguientes rutas de ejemplo:

1. `GET /pets/dog/1`

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

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

1. `ANY /{proxy+}`

1. `$default`

   En la siguiente tabla se resume la forma en que API Gateway enruta las solicitudes a las rutas de ejemplo.


| Solicitud | Ruta seleccionada | Explicación | 
| --- | --- | --- | 
|  `GET https://api-id.execute-api.region.amazonaws.com/pets/dog/1`  |  `GET /pets/dog/1`  |  La solicitud coincide completamente con esta ruta estática.  | 
|  `GET https://api-id.execute-api.region.amazonaws.com/pets/dog/2`  |  `GET /pets/dog/{id}`  |  La solicitud coincide completamente con esta ruta.  | 
|  `GET https://api-id.execute-api.region.amazonaws.com/pets/cat/1`  |  `GET /pets/{proxy+}`  |  La solicitud no coincide completamente con una ruta. La ruta con un método `GET` y una variable de ruta ambiciosa captura esta solicitud.  | 
| `POST https://api-id.execute-api.region.amazonaws.com/test/5` | `ANY /{proxy+}` |  El método `ANY` coincide con todos los métodos que no ha definido para una ruta. Las rutas con variables de ruta ambiciosas tienen mayor prioridad que la ruta `$default`.  | 