

# Elección de un tutorial de integración de HTTP
<a name="getting-started-http-integrations"></a>

 Para desarrollar una API con integración HTTP, puede utilizar una integración de proxy HTTP o una integración HTTP personalizada.

En una integración de proxy HTTP, solo tiene que establecer el método HTTP y el URI del punto de conexión HTTP, según los requisitos de backend. Le recomendamos utilizar integración de proxy HTTP cada vez que sea posible, para aprovechar la configuración de API simplificada.

Es posible que quiera usar una integración HTTP personalizada si necesita transformar los datos de la solicitud del cliente para el backend o transformar los datos de respuesta del backend para el cliente. 

**Topics**
+ [Tutorial: Creación de una API de REST con integración de proxy HTTP](api-gateway-create-api-as-simple-proxy-for-http.md)
+ [Tutorial: Creación de una API de REST con integración no de proxy HTTP](api-gateway-create-api-step-by-step.md)

# Tutorial: Creación de una API de REST con integración de proxy HTTP
<a name="api-gateway-create-api-as-simple-proxy-for-http"></a>

La integración de proxy HTTP es un mecanismo sencillo, potente y versátil para desarrollar una API que permita que una aplicación web obtenga acceso a múltiples recursos o características del punto de enlace HTTP integrado, por ejemplo, el sitio web completo, con una configuración simplificada de un único método de API. En la integración de proxy HTTP, API Gateway transmite la solicitud de método enviada por el cliente al backend. Los datos de la solicitud transmitida incluyen los encabezados de solicitud, los parámetros de cadena de consulta, las variables de ruta de la URL y la carga. El punto de enlace de HTTP del backend o del servidor web analiza los datos de la solicitud entrante para determinar la respuesta que devuelve. La integración de proxy HTTP permite que el cliente y el backend interactúen directamente sin intervención de API Gateway después de haber configurado el método de API, salvo cuando se producen problemas conocidos, como caracteres no admitidos, que se indican en [Notas importantes de Amazon API Gateway](api-gateway-known-issues.md).

Con el amplio recurso de proxy `{proxy+}` y el verbo catch-all `ANY` para el método HTTP, puede utilizar una integración de proxy HTTP para crear una API de un único método de API. El método expone el conjunto completo de recursos y operaciones HTTP de acceso público de un sitio web. Cuando el servidor web del backend abre más recursos para acceso público, el cliente puede utilizar estos nuevos recursos con la misma configuración de API. Para habilitar esto, el desarrollador del sitio web debe comunicar con claridad al desarrollador del cliente cuáles son los nuevos recursos y cuáles son las operaciones aplicables para cada uno de ellos.



Como una introducción rápida, el siguiente tutorial demuestra la integración de proxy HTTP. En el tutorial creamos una API que utiliza la consola de API Gateway para integrarse con el sitio web PetStore mediante un recurso de proxy genérico `{proxy+}` y creamos el marcador de posición del método HTTP de `ANY`. 

**Topics**
+ [Creación de una API con integración de proxy HTTP con la consola de API Gateway](#api-gateway-create-api-as-simple-proxy-for-http-build)
+ [Probar una API con la integración de proxy HTTP](#api-gateway-create-api-as-simple-proxy-for-http-test)

## Creación de una API con integración de proxy HTTP con la consola de API Gateway
<a name="api-gateway-create-api-as-simple-proxy-for-http-build"></a>

 El siguiente procedimiento le guiará por los pasos para crear y probar una API con un recurso de proxy para un backend HTTP mediante la consola de API Gateway. El backend HTTP es el `PetStore` sitio web (`http://petstore-demo-endpoint.execute-api.com/petstore/pets`) de [Tutorial: Creación de una API de REST con integración no de proxy HTTP](api-gateway-create-api-step-by-step.md), en el que las capturas de pantalla se utilizan como ayudas visuales para ilustrar los elementos de IU de API Gateway. Si es la primera vez que utiliza la consola de API Gateway para crear una API, le recomendamos seguir esa sección en primer lugar. 

**Creación de una API**

1. Inicie sesión en la consola de API Gateway en [https://console.aws.amazon.com/apigateway](https://console.aws.amazon.com/apigateway).

1. Si es la primera vez que utiliza API Gateway, verá una página en la que aparecen las características del servicio. En **REST API**, elija **Build (Compilación)**. Cuando aparezca el menú emergente **Create Example API (Crear API de ejemplo)**, elija **OK (Aceptar)**.

   Si esta no es la primera vez que utiliza API Gateway, elija **Create API (Crear API)**. En **REST API**, elija **Build (Compilación)**.

1.  En **API name (Nombre de la API)**, escriba**HTTPProxyAPI**.

1. (Opcional) En **Description (Descripción)**, introduzca una descripción.

1. Mantenga **Tipo de punto de conexión de la API** establecido en **Regional**.

1. En **Tipo de dirección IP**, seleccione **IPv4**.

1. Seleccione **Crear API**.

En este paso, creará una ruta de recursos de proxy de `{proxy+}`. Este es el marcador de posición de cualquier punto de conexión del backend bajo `http://petstore-demo-endpoint.execute-api.com/`. Por ejemplo, puede ser `petstore`, `petstore/pets` y `petstore/pets/{petId}`. API Gateway crea el método `ANY` al crear el recurso `{proxy+}` y actúa como un marcador de posición para cualquiera de los verbos HTTP admitidos en tiempo de ejecución.

**Para crear un recurso **/\$1proxy\$1\$1****

1. Elija la API. 

1. En el panel de navegación principal, elija **Recursos**.

1. Elija **Crear recurso**.

1. Active **Recurso proxy**.

1. Mantenga **Ruta del recurso** en `/`.

1. En **Nombre del recurso**, escriba **\$1proxy\$1\$1**.

1. Mantenga desactivado **CORS (uso compartido de recursos entre orígenes)**.

1. Elija **Crear recurso**.  
![\[Crear un recurso secundario.\]](http://docs.aws.amazon.com/es_es/apigateway/latest/developerguide/images/api-gateway-simple-proxy-create-proxy-resource-new-console.png)

En este paso, integrará el método `ANY` con un punto de conexión HTTP de backend mediante una integración de proxy. En la integración de proxy, API Gateway transmite la solicitud de método enviada por el cliente al backend sin la intervención de API Gateway.

**Para crear un método `ANY`**

1. Elija el recurso **/\$1proxy\$1\$1**.

1. Elija el método **ANY**.

1. Bajo el símbolo de advertencia, seleccione **Editar integración**. No puede implementar una API que tenga un método sin una integración.

1. En **Tipo de integración**, seleccione **HTTP**.

1. Active **Integración de proxy HTTP**.

1. En **Método HTTP**, seleccione **ANY**.

1. En **URL del punto de conexión**, introduzca **http://petstore-demo-endpoint.execute-api.com/\$1proxy\$1**.

1. Seleccione **Save**.

## Probar una API con la integración de proxy HTTP
<a name="api-gateway-create-api-as-simple-proxy-for-http-test"></a>

 El éxito de una solicitud de cliente específica dependerá de lo siguiente: 
+  Si el backend ha puesto a disposición el punto de enlace del backend correspondiente y, si lo ha hecho, si ha concedido los permisos de acceso requeridos. 
+ Si el cliente proporciona la entrada correcta.

Por ejemplo, la API de PetStore aquí utilizada no expone el recurso `/petstore`. Por lo tanto, obtendrá una respuesta `404 Resource Not Found` que contiene el mensaje de error de `Cannot GET /petstore`. 

Además, el cliente debe tener la posibilidad de gestionar el formato de salida del backend para analizar los resultados correctamente. API Gateway no realiza mediaciones para facilitar las interacciones entre el cliente y el backend. 

**Para probar una API integrada con el sitio web PetStore utilizando la integración de proxy HTTP a través del recurso de proxy**

1. Seleccione la pestaña **Pruebas**. Puede que tenga que elegir el botón de flecha hacia la derecha para mostrar la pestaña.

1. En **Tipo de método**, seleccione `GET`.

1. En **Ruta**, debajo de **proxy**, introduzca **petstore/pets**.

1. En **Cadenas de consulta**, escriba **type=fish**.

1. Seleccione **Probar**.

     
![\[Utilice la característica de prueba para probar un método.\]](http://docs.aws.amazon.com/es_es/apigateway/latest/developerguide/images/api-gateway-simple-proxy-petstore-call-proxy-resource-new-console.png)

   Como que el sitio web del backend admite la solicitud `GET /petstore/pets?type=fish`, devuelve una respuesta correcta similar a la siguiente:

   ```
   [
     {
       "id": 1,
       "type": "fish",
       "price": 249.99
     },
     {
       "id": 2,
       "type": "fish",
       "price": 124.99
     },
     {
       "id": 3,
       "type": "fish",
       "price": 0.99
     }
   ]
   ```

   Si intenta llamar a `GET /petstore`, obtendrá una respuesta `404` con un mensaje de error `Cannot GET /petstore`. Esto se debe a que el backend no es compatible con la operación especificada. Si llama a `GET /petstore/pets/1`, obtendrá una respuesta `200 OK` con la siguiente carga, ya que la solicitud admite el sitio web PetStore.

   ```
   {
     "id": 1,
     "type": "dog",
     "price": 249.99
   }
   ```

También puede utilizar un navegador para probar la API. Implemente su API y asóciela a una etapa para crear la URL de invocación de su API.

**Para implementar su API**

1. Elija **Implementar API**.

1. En **Etapa**, seleccione **Nueva etapa**.

1. En **Stage name (Nombre de etapa)**, escriba **test**.

1. (Opcional) En **Description (Descripción)**, introduzca una descripción.

1. Elija **Implementar**.

Ahora los clientes pueden llamar a la API. 

**Para invocar la API**

1. Inicie sesión en la consola de API Gateway en [https://console.aws.amazon.com/apigateway](https://console.aws.amazon.com/apigateway).

1. Elija la API.

1. En el panel de navegación principal, elija **Etapa**.

1. En **Detalles de la etapa**, elija el icono de copia para copiar la URL de invocación de la API.

   Introduzca la URL de invocación de la API en un navegador web. 

   La URL completa debería ser `https://abcdef123.execute-api.us-east-2.amazonaws.com/test/petstore/pets?type=fish`. 

   Su navegador envía una `GET` solicitud a la API.

1. El resultado debe ser el mismo que el que se devuelve cuando utiliza **Prueba** desde la consola de API Gateway.

# Tutorial: Creación de una API de REST con integración no de proxy HTTP
<a name="api-gateway-create-api-step-by-step"></a>

 En este tutorial creará una API desde cero utilizando la consola de Amazon API Gateway. La consola se puede considerar como un estudio de diseño de la API y se puede utilizar para definir el ámbito de las características de API, para probar su comportamiento, para crear la API y para implementar la API en etapas. 

**Topics**
+ [Crear una API con integración de HTTP personalizada](#api-gateway-create-resource-and-methods)
+ [(Opcional) Parámetros de la solicitud de mapeo](#api-gateway-create-resources-and-methods-next-steps)

## Crear una API con integración de HTTP personalizada
<a name="api-gateway-create-resource-and-methods"></a>

 Esta sección le guía por los pasos para crear recursos, exponer métodos en un recurso, configurar un método para lograr los comportamientos de la API deseados y probar e implementar la API.

En este paso, se crea una API vacía. En los siguientes pasos, debe crear recursos y métodos para conectar la API al punto de conexión `http://petstore-demo-endpoint.execute-api.com/petstore/pets` mediante una integración HTTP sin proxy. 

**Creación de una API**

1. Inicie sesión en la consola de API Gateway en [https://console.aws.amazon.com/apigateway](https://console.aws.amazon.com/apigateway).

1. Si es la primera vez que utiliza API Gateway, verá una página en la que aparecen las características del servicio. En **REST API**, elija **Build (Compilación)**. Cuando aparezca el menú emergente **Create Example API (Crear API de ejemplo)**, elija **OK (Aceptar)**.

   Si esta no es la primera vez que utiliza API Gateway, elija **Create API (Crear API)**. En **REST API**, elija **Build (Compilación)**.

1.  En **API name (Nombre de la API)**, escriba**HTTPNonProxyAPI**.

1. (Opcional) En **Description (Descripción)**, introduzca una descripción.

1. Mantenga **Tipo de punto de conexión de la API** establecido en **Regional**.

1. En **Tipo de dirección IP**, seleccione **IPv4**.

1. Seleccione **Crear API**.

El árbol **Resources (Recursos)** muestra el recurso raíz (`/`) sin métodos. En este ejercicio, vamos a desarrollar la API con la integración HTTP personalizada del sitio web de PetStore (http://petstore-demo-endpoint.execute-api.com/petstore/pets). Con fines ilustrativos, crearemos un recurso `/pets` como un elemento secundario de la raíz y expondremos un método GET en este recurso para que un cliente pueda recuperar una lista de los elementos Pets disponibles en el sitio web de PetStore.

**Para crear un recurso /pets**

1. Elija **Crear recurso**.

1. Mantenga **Recurso proxy** desactivado.

1. Mantenga **Ruta del recurso** en `/`.

1. En **Nombre del recurso**, escriba **pets**.

1. Mantenga desactivado **CORS (uso compartido de recursos entre orígenes)**.

1. Elija **Crear recurso**.

En este paso, se crea un método `GET` en el recurso **/pets**. El método `GET` está integrado con el sitio web `http://petstore-demo-endpoint.execute-api.com/petstore/pets`. Otras opciones para un método de API incluyen las siguientes:
+ **POST**, que se utiliza principalmente para crear recursos secundarios.
+ **PUT**, que se utiliza principalmente para actualizar los recursos existentes (y, aunque no es recomendable, puede utilizarse para crear recursos secundarios).
+ **DELETE**, que se utiliza para eliminar recursos.
+ **PATCH**, que se utiliza para actualizar los recursos.
+ **HEAD**, que se utiliza principalmente en escenarios de pruebas. Es igual que GET, pero no devuelve la representación de los recursos.
+ **OPTIONS**, que pueden usar los intermediarios para obtener la información sobre las opciones de comunicación disponibles para el servicio de destino.

 En el caso del **HTTP method (Método HTTP)** de la solicitud de integración, debe elegir uno de los métodos compatibles con el backend. Para `HTTP` o `Mock integration`, es razonable que la solicitud del método y la solicitud de integración usen el mismo verbo HTTP. Para otros tipos de integración, la solicitud del método usará probablemente un verbo HTTP diferente del de la solicitud de integración. Por ejemplo, para llamar a una función de Lambda, la solicitud de integración debe utilizar `POST` para invocar la función, mientras que la solicitud del método puede utilizar cualquier verbo HTTP en función de la lógica de la función de Lambda. 

**Para crear un método `GET` en el recurso **/pets****

1. Seleccione el recurso **/pets**.

1. Elija **Crear método**.

1. En **Tipo de método**, seleccione **GET**.

1. En **Tipo de integración**, seleccione **Integración HTTP**.

1. Mantenga desactivada **Integración de proxy HTTP**.

1. En **Método HTTP**, seleccione **GET**.

1. En **URL del punto de conexión**, introduzca **http://petstore-demo-endpoint.execute-api.com/petstore/pets**.

   El sitio web de PetStore le permite recuperar una lista de elementos `Pet` por tipo de mascota, por ejemplo, "Perro" o "Gato", en una determinada página.

1. En **Tratamiento de contenido**, seleccione **Acceso directo**.

1. Elija **Parámetros de cadenas de consulta de URL**.

   El sitio web de PetStore utiliza los parámetros de cadena de consulta `type` y `page` para aceptar una entrada. Se agregan los parámetros de cadena de consulta a la solicitud del método y se asignan a los parámetros de cadena de consulta correspondientes de la solicitud de integración. 

1. Para agregar parámetros de cadena de consulta, haga lo siguiente:

   1. Elija **Añadir cadena de consulta**.

   1. En **Nombre**, introduzca **type**.

   1. Mantenga desactivados **Obligatorio** y **Almacenamiento en caché**.

   Repita los pasos anteriores para crear una cadena de consulta adicional con el nombre **page**.

1. Elija **Crear método**.

El cliente ahora puede proporcionar un tipo de mascota y un número de página como parámetros de cadena de consulta cuando envíe una solicitud. Estos parámetros de entrada deben mapearse a los parámetros de cadena de consulta de la integración para reenviar los valores de entrada a nuestro sitio web de PetStore en el backend.

**Para mapear los parámetros de entrada a la solicitud de integración**

1. En la pestaña **Solicitud de integración**, en **Configuración de la solicitud de integración**, seleccione **Editar**.

1. Elija **Parámetros de cadenas de consulta de URL** y luego haga lo siguiente: 

   1. Seleccione **Añadir parámetro de cadena de consulta**.

   1. En **Nombre**, escriba **type**.

   1. En **Mapeado de**, introduzca **method.request.querystring.type**.

   1. Mantenga **Almacenamiento en caché** desactivado. 

   1. Seleccione **Añadir parámetro de cadena de consulta**.

   1. En **Nombre**, escriba **page**.

   1. En **Mapeado de**, introduzca **method.request.querystring.page**.

   1. Mantenga **Almacenamiento en caché** desactivado. 

1. Seleccione **Save**.

**Para probar el API**

1. Elija la pestaña **Prueba**. Puede que tenga que elegir el botón de flecha hacia la derecha para mostrar la pestaña.

1. En **Cadenas de consulta**, escriba **type=Dog&page=2**.

1. Seleccione **Probar**.

    El resultado es similar al siguiente:

      
![\[Resultado del método Test-invoke GET en pets\]](http://docs.aws.amazon.com/es_es/apigateway/latest/developerguide/images/api-gateway-create-api-step-by-step-test-invoke-get-on-pets-result-new-console.png)

    Ahora que la prueba se ha realizado correctamente, podemos implementar la API para ponerla a disposición del público en general. 

1. Elija **Implementar API**.

1. En **Etapa**, seleccione **Nueva etapa**.

1. En **Stage name (Nombre de etapa)**, escriba **Prod**.

1. (Opcional) En **Description (Descripción)**, introduzca una descripción.

1. Elija **Implementar**.

1.  (Opcional) En **Detalles de la etapa**, para **URL de invocación**, puede elegir el icono de copia para copiar la URL de invocación de su API. Puede utilizar esto con herramientas como [Postman](https://www.postman.com) y [cURL](https://curl.se/) para probar la API.

 Si utiliza un SDK para crear un cliente, puede llamar a los métodos expuestos por el SDK para firmar la solicitud. Para obtener más información, consulte los [AWSSDK](https://aws.amazon.com/developer/tools/) que desee. 

**nota**  
 Cuando se realicen cambios en la API, deberá volver a implementar la API para que las características nuevas o actualizadas estén disponibles antes de volver a invocar la URL de la solicitud. 

## (Opcional) Parámetros de la solicitud de mapeo
<a name="api-gateway-create-resources-and-methods-next-steps"></a>

### Asignación de parámetros de solicitudes para una API de API Gateway
<a name="getting-started-mappings"></a>

 En este tutorial, se muestra cómo crear un parámetro de ruta `{petId}` en la solicitud de método de la API para especificar un ID de elemento, asignarlo al parámetro de ruta `{id}` en la URL de la solicitud de integración y enviar la solicitud al punto de conexión HTTP.

**nota**  
 Si introduce una letra con las mayúsculas o minúsculas incorrectas (por ejemplo, una letra minúscula en lugar de una mayúscula), se producirán errores más adelante en el tutorial. 

#### Paso 1: Crear recursos
<a name="getting-started-mappings-add-resources"></a>

En este paso, se crea un recurso con un parámetro de ruta \$1petId\$1.

**Para crear el recurso \$1petID\$1**

1. Seleccione el recurso **/pets** y, a continuación, elija **Crear recurso**.

1. Mantenga **Recurso proxy** desactivado.

1. En **Ruta de recurso**, seleccione **/pets/**.

1. En **Nombre del recurso**, escriba **\$1petId\$1**.

    Utilice llaves (`{ }`) alrededor de `petId` para que aparezca **/pets/\$1petId\$1**.

1. Mantenga desactivado **CORS (uso compartido de recursos entre orígenes)**.

1. Elija **Crear recurso**.

#### Paso 2: Crear y probar los métodos
<a name="getting-started-mappings-set-methods"></a>

 En este paso, se crea un método `GET` con un parámetro de ruta `{petId}`. 

**Para configurar el método GET**

1. Seleccione el recurso **/\$1petId\$1** y, a continuación, elija **Crear método**.

1. En **Tipo de método**, seleccione **GET**.

1. En **Tipo de integración**, seleccione **Integración HTTP**.

1. Mantenga desactivada **Integración de proxy HTTP**.

1. En **Método HTTP**, seleccione **GET**.

1. En **URL del punto de conexión**, introduzca **http://petstore-demo-endpoint.execute-api.com/petstore/pets/\$1id\$1**

1. En **Tratamiento de contenido**, seleccione **Acceso directo**.

1. Mantenga activado **Tiempo de espera predeterminado**. 

1. Elija **Crear método**.

Ahora, asigne el parámetro de ruta `{petId}` que acaba de crear al parámetro de ruta `{id}` en la URL del punto de conexión HTTP de la solicitud de integración. La URL del punto de conexión HTTP era **http://petstore-demo-endpoint.execute-api.com/petstore/pets/\$1id\$1**.

**Para mapear el parámetro de ruta `{petId}`**

1. En la pestaña **Solicitud de integración**, en **Configuración de la solicitud de integración**, seleccione **Editar**.

1. Elija los **Parámetros de la ruta URL**.

1.  API Gateway crea un parámetro de ruta para la solicitud de integración denominado **petId**. Sin embargo, este parámetro de ruta no es válido para la URL del punto de conexión HTTP que ha configurado como integración de backend. El punto de conexión HTTP utiliza `{id}` como parámetro de ruta. En **Nombre**, elimine **petId** y escriba **id**.

   Esto asigna el parámetro de ruta de la solicitud del método de `petId` al parámetro de ruta de la solicitud de integración de `id`.

1. Seleccione **Save**.

Ahora pruebe el método.

**Para probar el método**

1. Elija la pestaña **Prueba**. Puede que tenga que elegir el botón de flecha hacia la derecha para mostrar la pestaña.

1. En **Ruta**, en **petId**, introduzca **4**.

1. Seleccione **Test (Probar)**.

   Si todo sale bien, en **Cuerpo de la respuesta** se mostrará lo siguiente:

   ```
   {
     "id": 4,
     "type": "bird",
     "price": 999.99
   }
   ```

#### Paso 3: Implementar la API
<a name="getting-started-mappings-deploy"></a>

En este paso, implementará la API para que pueda empezar a llamarla fuera de la consola de API Gateway.

**Para implementar la API**

1. Elija **Implementar API**.

1. En **Etapa**, seleccione **Prod**.

1. (Opcional) En **Description (Descripción)**, introduzca una descripción.

1. Elija **Deploy (Implementar)**.

#### Paso 4: Probar la API
<a name="getting-started-mappings-test"></a>

En este paso, saldrá de la consola de API Gateway y utilizará la API para obtener acceso al punto de enlace HTTP.

1. En el panel de navegación principal, elija **Etapa**.

1. En **Detalles de la etapa**, elija el icono de copia para copiar la URL de invocación de la API.

   Debe tener un aspecto similar al siguiente:

   ```
   https://my-api-id.execute-api.region-id.amazonaws.com/prod
   ```

1. Introduzca esta URL en el cuadro de dirección de una nueva pestaña del navegador y añada `/pets/4` a la URL antes de enviar su solicitud.

1. El navegador devolverá lo siguiente:

   ```
   {
     "id": 4,
     "type": "bird",
     "price": 999.99
   }
   ```

#### Pasos a seguir a continuación
<a name="api-gateway-create-resources-and-methods-next-steps"></a>

Puede personalizar aún más su API activando la validación de solicitudes, transformando los datos o creando respuestas de puerta de enlace personalizadas. 

Para explorar más formas de personalizar su API, consulte los siguientes tutoriales:
+ Para obtener más información sobre la validación de solicitud, consulte [Configuración de la validación básica de solicitudes en API Gateway](api-gateway-request-validation-set-up.md).
+ Para obtener información sobre cómo transformar las cargas de solicitudes y respuestas, consulte [Tutorial: modificación de la solicitud y respuesta de integración para integraciones con servicios de AWS](set-up-data-transformations-in-api-gateway.md).
+ Para obtener información sobre cómo crear respuestas de puerta de enlace personalizadas consulte [Configurar una respuesta de gateway para una API REST mediante la consola de API Gateway](set-up-gateway-response-using-the-console.md).