

# 使用由 API Gateway 为 REST API 生成的 Ruby 开发工具包
<a name="how-to-call-sdk-ruby"></a>

以下过程介绍如何使用 API Gateway 生成的 Ruby SDK。

**注意**  
这些说明假设您已完成[为 API Gateway 中的 REST API 生成 SDK](how-to-generate-sdk.md)中的说明。

**要开始安装，请实例化并调用由 API Gateway 为 REST API 生成的 Ruby 开发工具包**

1. 解压缩下载的 Ruby 开发工具包文件。生成的开发工具包源如下所示。  
![\[将下载的 Ruby 开发工具包文件解压缩到 Ruby 模块中\]](http://docs.aws.amazon.com/zh_cn/apigateway/latest/developerguide/images/ruby-gem-of-generated-sdk-for-simplecalc.png)

   

1.  从生成的开发工具包源构建 Ruby Gem，在终端窗口中使用以下 shell 命令：

   ```
   # change to /simplecalc-sdk directory
   cd simplecalc-sdk
   
   # build the generated gem
   gem build simplecalc-sdk.gemspec
   ```

   在此之后，**simplecalc-sdk-1.0.0.gem** 变为可用状态。

1.  安装 gem：

   ```
   gem install simplecalc-sdk-1.0.0.gem
   ```

1.  创建客户端应用程序。在应用程序中实例化和初始化 Ruby 开发工具包客户端：

   ```
   require 'simplecalc-sdk'
   client = SimpleCalc::Client.new(
       http_wire_trace: true,
       retry_limit: 5,
       http_read_timeout: 50
   )
   ```

   如果 API 已经配置了 `AWS_IAM` 类型的授权，您可以在初始化期间提供 AWS 和 `accessKey`，包括调用方的 `secretKey` 凭证。

   ```
   require 'pet-sdk'
   client = Pet::Client.new(
       http_wire_trace: true,
       retry_limit: 5,
       http_read_timeout: 50,
       access_key_id: 'ACCESS_KEY',
       secret_access_key: 'SECRET_KEY'
   )
   ```

1.  在应用程序中通过开发工具包进行 API 调用。
**提示**  
 如果您不熟悉开发工具包方法调用约定，可以查看生成的开发工具包 `client.rb` 文件夹中的 `lib` 文件。该文件夹包含支持的各个 API 方法调用的文档。

   搜索支持的操作：

   ```
   # to show supported operations:
   puts client.operation_names
   ```

   这将生成以下显示内容，分别对应于 `GET /?a={.}&b={.}&op={.}`、`GET /{a}/{b}/{op}` 的 API 方法，以及 `POST /`，加上 `{a:"…", b:"…", op:"…"}` 格式的负载：

   ```
   [:get_api_root, :get_ab_op, :post_api_root]
   ```

   要调用 `GET /?a=1&b=2&op=+` API 方法，请调用以下 Ruby 开发工具包方法：

   ```
   resp = client.get_api_root({a:"1", b:"2", op:"+"})
   ```

   要使用 `POST /` 的负载调用 `{a: "1", b: "2", "op": "+"}` API 方法，请调用以下 Ruby 开发工具包方法：

   ```
   resp = client.post_api_root(input: {a:"1", b:"2", op:"+"})
   ```

   要调用 `GET /1/2/+` API 方法，请调用以下 Ruby 开发工具包方法：

   ```
   resp = client.get_ab_op({a:"1", b:"2", op:"+"})
   ```

   成功的开发工具包方法调用返回以下响应：

   ```
   resp : {
       result: {
           input: {
               a: 1,
               b: 2,
               op: "+"
           },
           output: {
               c: 3
           }
       }
   }
   ```