

# Desarrollo de las API de REST en API Gateway
<a name="rest-api-develop"></a>

 En Amazon API Gateway, las API REST se crean como una colección de entidades programables conocidas como [recursos](https://docs.aws.amazon.com/apigateway/latest/api/API_Resource.html) de API Gateway. Por ejemplo, se utiliza un recurso [RestApi](https://docs.aws.amazon.com/apigateway/latest/api/API_RestApi.html) para representar una API que puede contener una colección de entidades [Resource](https://docs.aws.amazon.com/apigateway/latest/api/API_Resource.html). 

Cada entidad `Resource` puede tener uno o más recursos [Method](https://docs.aws.amazon.com/apigateway/latest/api/API_Method.html). Un `Method` es una solicitud entrante enviada por el cliente y puede contener los siguientes parámetros de solicitud: un parámetro de ruta, un encabezado o un parámetro de cadena de consulta. Además, según el método HTTP, la solicitud puede contener un cuerpo. El método define cómo el cliente accede al `Resource` expuesto. Para integrar el `Method` con un punto de conexión de backend, también conocido como punto de conexión de integración, se crea un recurso de [integración](https://docs.aws.amazon.com/apigateway/latest/api/API_Integration.html). Esto reenvía la solicitud entrante a un URI de punto de conexión de integración específico. Si es necesario, puede transformar los parámetros de la solicitud o el cuerpo de la solicitud para cumplir con los requisitos de backend o puede crear una integración de proxy, en la que API Gateway envía la solicitud completa en un formato estandarizado al URI del punto de conexión de integración y luego envía directamente la respuesta al cliente.

Para las respuestas, puede crear un recurso [MethodResponse](https://docs.aws.amazon.com/apigateway/latest/api/API_MethodResponse.html) para representar una respuesta recibida por el cliente y crear un recurso [IntegrationResponse](https://docs.aws.amazon.com/apigateway/latest/api/API_IntegrationResponse.html) para representar la respuesta que devuelve el backend. Utilice una respuesta de integración para transformar los datos de respuesta del backend antes de devolver los datos al cliente o transferir la respuesta del backend tal y como está al cliente.

## Recurso de ejemplo para una API de REST
<a name="rest-api-develop-example"></a>

En el siguiente diagrama se muestra cómo API Gateway implementa este modelo de solicitud/respuesta para un proxy HTTP y una integración HTTP sin proxy para el recurso `GET /pets`. El cliente envía el encabezado `x-version:beta` a API Gateway y API Gateway envía el código de estado `204` al cliente.

En la integración sin proxy, API Gateway realiza transformaciones de datos para cumplir con los requisitos de backend, mediante la modificación de la solicitud de integración y la respuesta de integración. En una integración sin proxy, puede acceder al cuerpo en la solicitud del método, pero lo transforma en la solicitud de integración. Cuando el punto de conexión de integración devuelve una respuesta con un cuerpo, se accede a ella y se transforma en la respuesta de integración. No puede modificar el cuerpo en la respuesta del método.

En la integración de proxy, el punto de conexión de integración modifica la solicitud y la respuesta. API Gateway no modifica la solicitud de integración ni la respuesta de integración y envía la solicitud entrante al backend tal cual.

Independientemente del tipo de integración, el cliente ha enviado una solicitud a API Gateway y API Gateway ha respondido de forma sincrónica.

------
#### [ Non-proxy integration ]

![Diagrama de integración sin proxy de API Gateway](http://docs.aws.amazon.com/es_es/apigateway/latest/developerguide/images/develop-non-proxy.png)


------
#### [ Proxy integration ]

![Diagrama de integración de proxy de API Gateway](http://docs.aws.amazon.com/es_es/apigateway/latest/developerguide/images/develop-proxy.png)


------

Los siguientes registros de ejecución de ejemplo muestran lo que API Gateway registraría en el ejemplo anterior. Para mayor claridad, se han eliminado algunos valores y registros iniciales:

------
#### [ Non-proxy integration ]

```
Wed Feb 12 23:56:44 UTC 2025 : Starting execution for request: abcd-1234-5678
Wed Feb 12 23:56:44 UTC 2025 : HTTP Method: GET, Resource Path: /pets
Wed Feb 12 23:56:44 UTC 2025 : Method request path: {}
Wed Feb 12 23:56:44 UTC 2025 : Method request query string: {}
Wed Feb 12 23:56:44 UTC 2025 : Method request headers: {x-version=beta}
Wed Feb 12 23:56:44 UTC 2025 : Method request body before transformations: 
Wed Feb 12 23:56:44 UTC 2025 : Endpoint request URI: http://petstore-demo-endpoint.execute-api.com/petstore/pets
Wed Feb 12 23:56:44 UTC 2025 : Endpoint request headers: {app-version=beta}
Wed Feb 12 23:56:44 UTC 2025 : Endpoint request body after transformations: 
Wed Feb 12 23:56:44 UTC 2025 : Sending request to http://petstore-demo-endpoint.execute-api.com/petstore/pets
Wed Feb 12 23:56:45 UTC 2025 : Received response. Status: 200, Integration latency: 123 ms
Wed Feb 12 23:56:45 UTC 2025 : Endpoint response headers: {Date=Wed, 12 Feb 2025 23:56:45 GMT}
Wed Feb 12 23:56:45 UTC 2025 : Endpoint response body before transformations:
Wed Feb 12 23:56:45 UTC 2025 : Method response body after transformations: (null)
Wed Feb 12 23:56:45 UTC 2025 : Method response headers: {X-Amzn-Trace-Id=Root=1-abcd-12345}
Wed Feb 12 23:56:45 UTC 2025 : Successfully completed execution
Wed Feb 12 23:56:45 UTC 2025 : Method completed with status: 204
```

------
#### [ Proxy integration ]

```
Wed Feb 12 23:59:42 UTC 2025 : Starting execution for request: abcd-1234-5678
Wed Feb 12 23:59:42 UTC 2025 : HTTP Method: GET, Resource Path: /pets
Wed Feb 12 23:59:42 UTC 2025 : Method request path: {}
Wed Feb 12 23:59:42 UTC 2025 : Method request query string: {}
Wed Feb 12 23:59:42 UTC 2025 : Method request headers: {x-version=beta}
Wed Feb 12 23:59:42 UTC 2025 : Method request body before transformations: 
Wed Feb 12 23:59:42 UTC 2025 : Endpoint request URI: http://petstore-demo-endpoint.execute-api.com/petstore/pets
Wed Feb 12 23:59:42 UTC 2025 : Endpoint request headers: { x-version=beta}
Wed Feb 12 23:59:42 UTC 2025 : Endpoint request body after transformations: 
Wed Feb 12 23:59:42 UTC 2025 : Sending request to http://petstore-demo-endpoint.execute-api.com/petstore/pets
Wed Feb 12 23:59:43 UTC 2025 : Received response. Status: 204, Integration latency: 123 ms
Wed Feb 12 23:59:43 UTC 2025 : Endpoint response headers: {Date=Wed, 12 Feb 2025 23:59:43 GMT}
Wed Feb 12 23:59:43 UTC 2025 : Endpoint response body before transformations: 
Wed Feb 12 23:59:43 UTC 2025 : Method response body after transformations:
Wed Feb 12 23:59:43 UTC 2025 : Method response headers: {Date=Wed, 12 Feb 2025 23:59:43 GMT}
Wed Feb 12 23:59:43 UTC 2025 : Successfully completed execution
Wed Feb 12 23:59:43 UTC 2025 : Method completed with status: 204
```

------

Para importar una API similar y probarla en la Consola de administración de AWS, consulte la [API de ejemplo](api-gateway-create-api-from-example.md).

## Características adicionales de la API de REST para el desarrollo
<a name="rest-api-develop-details"></a>

API Gateway admite características adicionales para el desarrollo de la API de REST. Por ejemplo, para ayudar a los clientes a comprender la API, puede proporcionar documentación para la API. Para ello, agregue un recurso [DocumentationPart](https://docs.aws.amazon.com/apigateway/latest/api/API_DocumentationPart.html) para una entidad de API compatible.

Para controlar el modo en que los clientes llaman a la API, utilice [permisos de IAM](permissions.md), un [autorizador de Lambda](apigateway-use-lambda-authorizer.md) o un [grupo de usuarios de Amazon Cognito](apigateway-integrate-with-cognito.md). Para medir el uso de la API, configure [planes de uso](api-gateway-api-usage-plans.md) para limitar las solicitudes a la API. Puede habilitar estos elementos al crear o al actualizar la API.

En el siguiente diagrama se muestran las características disponibles para el desarrollo de la API de REST y dónde se configuran estas características en el modelo de solicitud/respuesta.

![Diagrama de las características de API Gateway](http://docs.aws.amazon.com/es_es/apigateway/latest/developerguide/images/develop-features.png)


Para obtener una introducción sobre cómo crear una API, consulte [Tutorial: Creación de una API de REST con una integración de proxy de Lambda](api-gateway-create-api-as-simple-proxy-for-lambda.md). Para obtener más información sobre las funciones de API Gateway que puede utilizar al desarrollar una API de REST, consulte los siguientes temas. Estos temas contienen información conceptual y procedimientos que puede realizar a través de la consola de API Gateway, la API de REST de API Gateway, la AWS CLI o uno de los AWS SDK.

**Topics**
+ [Recurso de ejemplo para una API de REST](#rest-api-develop-example)
+ [Características adicionales de la API de REST para el desarrollo](#rest-api-develop-details)
+ [Tipos de punto de conexión para las API de REST en API Gateway](api-gateway-api-endpoint-types.md)
+ [Políticas de seguridad de las API de REST en API Gateway](apigateway-security-policies.md)
+ [Tipos de direcciones IP para API de REST en API Gateway](api-gateway-ip-address-type.md)
+ [Métodos de API de REST en API Gateway](how-to-method-settings.md)
+ [Control y administración del acceso a las API de REST en API Gateway](apigateway-control-access-to-api.md)
+ [Integraciones para las API de REST en API Gateway](how-to-integration-settings.md)
+ [Solicitud de la validación de las API de REST en API Gateway](api-gateway-method-request-validation.md)
+ [Transformaciones de datos para las API de REST en API Gateway](rest-api-data-transformations.md)
+ [Respuestas de Gateway para las API de REST en API Gateway](api-gateway-gatewayResponse-definition.md)
+ [CORS para las API de REST en API Gateway](how-to-cors.md)
+ [Tipos de medios binarios para las API de REST en API Gateway](api-gateway-payload-encodings.md)
+ [Invocación de las API de REST en API Gateway](how-to-call-api.md)
+ [Desarrollo de API de REST mediante OpenAPI en API Gateway](api-gateway-import-api.md)