

# 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).