

# Uso de un SDK de JavaScript generado por API Gateway para una API REST
<a name="how-to-generate-sdk-javascript"></a>

En el siguiente procedimiento se muestra cómo crear un SDK de JavaScript generado por API Gateway.

**nota**  
En estas instrucciones se presupone que ya ha completado las instrucciones de [Generación de SDK para las API de REST en API Gateway](how-to-generate-sdk.md).

**importante**  
Si su API solo tiene métodos ANY definidos, el paquete SDK generado no contendrá un archivo `apigClient.js`, por lo que tendrá que definir los métodos ANY usted mismo.

**Para instalar, iniciar e invocar un SDK de JavaScript generado por API Gateway para una API REST**

1. Extraiga el contenido del archivo .zip generado por API Gateway que ha descargado anteriormente.

1. Habilite el uso compartido de recursos de origen cruzado (CORS) para todos los métodos a los que llamará el SDK generado por API Gateway. Para obtener instrucciones, consulte [CORS para las API de REST en API Gateway](how-to-cors.md).

1. En la página web, incluya referencias a los siguientes scripts.

   ```
   <script type="text/javascript" src="lib/axios/dist/axios.standalone.js"></script>
   <script type="text/javascript" src="lib/CryptoJS/rollups/hmac-sha256.js"></script>
   <script type="text/javascript" src="lib/CryptoJS/rollups/sha256.js"></script>
   <script type="text/javascript" src="lib/CryptoJS/components/hmac.js"></script>
   <script type="text/javascript" src="lib/CryptoJS/components/enc-base64.js"></script>
   <script type="text/javascript" src="lib/url-template/url-template.js"></script>
   <script type="text/javascript" src="lib/apiGatewayCore/sigV4Client.js"></script>
   <script type="text/javascript" src="lib/apiGatewayCore/apiGatewayClient.js"></script>
   <script type="text/javascript" src="lib/apiGatewayCore/simpleHttpClient.js"></script>
   <script type="text/javascript" src="lib/apiGatewayCore/utils.js"></script>
   <script type="text/javascript" src="apigClient.js"></script>
   ```

1. En el código, inicialice el SDK generado por API Gateway mediante un código similar al siguiente.

   ```
   var apigClient = apigClientFactory.newClient();
   ```

   Para inicializar el SDK generado por API Gateway con credenciales de AWS, utilice un código similar al siguiente. Si utiliza las credenciales de AWS, todas las solicitudes a la API se firmarán. 

   ```
   var apigClient = apigClientFactory.newClient({
     accessKey: 'ACCESS_KEY',
     secretKey: 'SECRET_KEY',
   });
   ```

   Para utilizar una clave de API con el SDK generado por API Gateway, pase la clave de API como parámetro al objeto `Factory` utilizando un código similar al siguiente. Si utiliza una clave de API, esta se especifica como parte del encabezado `x-api-key` y todas las solicitudes a la API se firmarán. Esto significa que debe configurar los encabezados Accept de CORS adecuados para cada solicitud.

   ```
   var apigClient = apigClientFactory.newClient({
     apiKey: 'API_KEY'
   });
   ```

   

1. Llame a los métodos de la API en API Gateway con un código similar al siguiente. Cada llamada devuelve una promesa con devoluciones de llamada de éxito y fracaso.

   ```
   var params = {
     // This is where any modeled request parameters should be added.
     // The key is the parameter name, as it is defined in the API in API Gateway.
     param0: '',
     param1: ''
   };
   
   var body = {
     // This is where you define the body of the request,
   };
   
   var additionalParams = {
     // If there are any unmodeled query parameters or headers that must be
     //   sent with the request, add them here.
     headers: {
       param0: '',
       param1: ''
     },
     queryParams: {
       param0: '',
       param1: ''
     }
   };
   
   apigClient.methodName(params, body, additionalParams)
       .then(function(result){
         // Add success callback code here.
       }).catch( function(result){
         // Add error callback code here.
       });
   ```

   Aquí, *methodName* se crea a partir de la ruta y el verbo HTTP del recurso de la solicitud de método. Para la API SimpleCalc, los métodos de SDK para los métodos de la API de 

   ```
   1. GET /?a=...&b=...&op=...
   2. POST /
   
      { "a": ..., "b": ..., "op": ...}
   3. GET /{a}/{b}/{op}
   ```

   los métodos del SDK correspondientes son los siguientes:

   ```
   1. rootGet(params);      // where params={"a": ..., "b": ..., "op": ...} is resolved to the query parameters
   2. rootPost(null, body); // where body={"a": ..., "b": ..., "op": ...}
   3. aBOpGet(params);      // where params={"a": ..., "b": ..., "op": ...} is resolved to the path parameters
   ```

   