转载

使用 IBM Bluemix 构建一个托管的 API

API 正在迅速成为组织最重要的资产之一。 让其他开发人员和组织能够通过他们自己的应用程序和服务来使用您的 API,这为创新和货币化提供了一个引人注目的系统。

IBM API Management 是一个强大的机制,可以控制 API 访问,管理多个版本的 API,建立速率限制,并跟踪在您的产品组合中的每个 API 的性能指标和分析。 IBM Bluemix 中的 API Management 服务支持从任何地方完成 API 的一站式购物和管理。本教程将引导您创建一个 API,将该 API 发布到 Bluemix 组织,并最终通过示例应用程序代码使用该 API。

阅读: API Management 服务入门

阅读: API 101

阅读: IBM API Management Service 文档

API Management 的其中一个核心原则是允许他人使用您的 API。API Management 与 Bluemix 的结合使用使得 API 可以在不同 Bluemix 组织之间得到共享。

构建应用程序需要做的准备工作

  • 一个 Bluemix 帐户和 Bluemix DevOps Services 帐户,两个帐户都被链接到您的 IBM ID
  • Cloud Foundry 命令行工具
  • 一个 Git 命令行客户端

运行应用程序

获取代码

步骤 1. 配置 API Management 服务

  1. 登录到 Bluemix 。
  2. 在目录中,从 Category 列表中选择 Integration 并单击 API Management使用 IBM Bluemix 构建一个托管的 API
  3. 在服务信息页面上检查计划选择,并选中一个计划。(在撰写本文时,只提供了一个 Standard 计划。)单击 CREATE 按钮来配置和启动 API Management 服务。您的第一站是入门页面: 使用 IBM Bluemix 构建一个托管的 API 您可以通过单击 LEARN MORE 随时查看文档。

步骤 2. 创建第一个 API

Swagger 文件代表一个先前已经存在的 API,它的实现位于 https://github.com/swagger-api/rails-petstore 上。

您可以使用 API Manager 从头开始创建 API,也可以根据 Swagger 或 Web Services Description Language (WSDL) 定义导入一个现有的 API。出于本教程之目的,您将通过 swagger.io 导入 Pet Store 示例。

  1. 在 Bluemix 中的 Get started with API Management 页面上,单击 Import APIs, or compose a new one 链接,在新的选项卡中打开 API Manager(这需要一些时间)。
  2. 单击蓝色的 +API 按钮,然后选择 Import Swagger
  3. 您可以通过 URL 上传或引用一个 Swagger 文档。在 Add API From Swagger Definition 对话框中,将以下 URL 粘贴到 Swagger URL 字段中:

    https://raw.githubusercontent.com/mhamann/apim-sample/master/petstore.json

    让 Username 和 Password 字段保留空白,然后单击 Load

  4. API Manager 现在列出了 Swagger 文件中包含的所有 API 和资源。单击 Add 按钮来创建 API: 使用 IBM Bluemix 构建一个托管的 API

    点击查看大图

    关闭 [x]

    使用 IBM Bluemix 构建一个托管的 API

    API 列表中现在列出了新的 API: 使用 IBM Bluemix 构建一个托管的 API
  5. 单击 API 标题打开 API 编辑器,在这里,您可以修改各种 API 属性。您可以更改名称、描述和路径;添加和删 除资源;并调整选项,比如身份验证和授权。
  6. 单击 API 路径并将它从 /v2 更改为 /petstore
  7. 单击 Security 选项卡。在 Identify Application Using 选项下,从列表中选择 Client ID and Client Secret ,为您的 API 提供增强的安全性。
  8. 单击右上角的 Save API 按钮。当看到 Success API Saved 消息时,您的 API 已经成功创建。

步骤 3. 创建一个计划

每个 API 都必须是 计划 的一部分,然后才可以对其进行发布和调用。API Management 使用计划来管理对 API 资源的访问权限,设置速率限制,并将 API 放进各种环境中(沙箱、测试、生产环境等)。一个计划可以包含来自任意数量的 API 的资源,以便支持采用不同速率限制对资源分组进行访问。在这一步中,将会创建一个新的计划,将您的 API 资源添加到该计划中,设置速率限制,并部署该计 划。在本教程后面的操作中,您将发布计划,以便在 Bluemix 中使用它。

  1. 打开 Plans 页面,方法是单击 API Manager 中的计划图标 使用 IBM Bluemix 构建一个托管的 API ,或返回 Get started with API Management 页面,并选中新建计划的选项。
  2. 在 API Manager 中,单击 + Plan 按钮。输入计划的名称并单击 Add
  3. 现在,可以在计划列表中看到新计划了。单击该计划的标题,打开计划编辑器。
  4. 现在,将来自 Pet Store API 的资源添加到计划。单击 + Resource 按钮。API 列表显示在左侧,API 的资源显示在右侧。如果尚未选中 Swagger Petstore API,请选中它。选择属于该 API 的所有资源,然后单击 Add 。随后,选中的资源被显示在计划编辑器的下方: 使用 IBM Bluemix 构建一个托管的 API

    点击查看大图

    关闭 [x]

    使用 IBM Bluemix 构建一个托管的 API

  5. 可为每个资源单独设置速率限制,也可以为整个计划进行设置。如果在计划级别采用速率限制,那么该限制会被应用到该计划中的所有资源。

    单击 Rate limit 部分下面的编辑图标,设置计划的速率限制。设置速率限制为: 10,000 requests per 1 Days,然后单击 Apply使用 IBM Bluemix 构建一个托管的 API
  6. 单击页面右上角的 Save ,保存对计划的变更: 使用 IBM Bluemix 构建一个托管的 API
  7. 您已准备好部署计划。单击 Deploy 图标显示部署菜单。等到 Sandbox 选项出现,然后选中它。几分钟后,您应该会看到一个成功通知: 使用 IBM Bluemix 构建一个托管的 API

此时,计划已被部署,并可随时与他人共享。

步骤 4. 邀请其他人使用您的 API(可选)

API Management 的核心原则之一就是允许他人使用您的 API。API Management 与 Bluemix 的结合使用使得 API 可以在不同 Bluemix 组织之间得到共享。要与其他组织共享 API,请遵循此步骤;否则,您可以跳到步骤 5。

  1. 打开 Developers 页面,方法是单击 API Manager 中的开发人员图标 使用 IBM Bluemix 构建一个托管的 API ,或返回入门页面并选中第三个活动(邀请其他 Bluemix 组织共享您的 API)。
  2. 已经是现有 Bluemix 用户的受邀者必须在其组织中拥有 Manager 或 Billing Manager 的角色。没有 Bluemix 帐户的用户会看到提示,要求在继续操作之前创建一个帐户。

    单击 + Bluemix Organization 按钮邀请其他 Bluemix 用户将其组织与您的组织关联在一起。关联只是使您将来能够与该组织一起共享 API。
  3. 输入将会一起共享 API 的人的电子邮件地址,然后单击 Invite使用 IBM Bluemix 构建一个托管的 API

在受邀用户接受通过电子邮件发送的邀请之前,新组织不会显示在开发人员组织的列表中。

步骤 5. 将 API 发布到 Bluemix

  1. 打开Management 页面,方法是单击 API Manager 中的管理图标 使用 IBM Bluemix 构建一个托管的 API ,或返回 Get started with API Management 页面,并选中最后一项活动。
  2. 在已部署计划列表中,单击 Pet Store - Gold plan ,展开该计划,并显示目前已部署版本的列表。
  3. 单击图标 使用 IBM Bluemix 构建一个托管的 API 启动计划发布向导。
  4. 请务必选中 Publish this version 并单击 Next
  5. 在下一个向导页面中,确保已选中 Select group of developer organizations and communities ,然后在下面的字段中输入或选中 Bluemix 。如果您在步骤 4 中邀请了另一个 Bluemix 组织,那么您还可以在这里输入该组织的名称,让该 API 对该组织可用。(备注:如果输入字段没有立即显示出来,请尝试单击 Select group of developer organizations and communities 选项旁边的蓝色圆圈,即使它已被选中,也可以再单击一次。) 使用 IBM Bluemix 构建一个托管的 API
  6. 单击 Publish

几分钟后,您会看到一个通知,指示发布已成功。

步骤 6. 将 API 绑定到一个应用程序

您已经在 API Manager 中成功地创建了一个 API,并将其发布到 Bluemix。现在,它显示在您的组织的 Bluemix 目录中。这个过程的最后一步是配置 API,将它绑定到某个应用程序,并观察数据流!您将创建一个新的 Node.js 应用程序,并配置您的 API,将其绑定到该应用程序,然后将一些代码推送给应用程序,以便向 API 提供一个简单的 Web 前端。

  1. 打开 Bluemix 仪表板并单击 CREATE AN APP
  2. 单击 WEB
  3. 选中 SDK for Node.js ,然后单击 CONTINUE 按钮。给应用程序提供一个惟一的名称,然后单击 FINISH
  4. 在创建应用程序之后,滚动到页面底部,单击 VIEW APP OVERVIEW 转到新应用程序的概述页面: 使用 IBM Bluemix 构建一个托管的 API

    点击查看大图

    关闭 [x]

    使用 IBM Bluemix 构建一个托管的 API

  5. 单击 ADD A SERVICE OR API ,这会将您带到 Bluemix 目录。选中 Custom APIs 类别,然后选中 Swagger Petstore 磁贴: 使用 IBM Bluemix 构建一个托管的 API 现在,您可以看到 API 的细节,包括它提供的所有资源、参数、示例响应,等等: 使用 IBM Bluemix 构建一个托管的 API

    点击查看大图

    关闭 [x]

    使用 IBM Bluemix 构建一个托管的 API

  6. 选中您的应用程序,单击 CREATE 按钮配置 API,并将其绑定到应用程序。如果要求重新演示应用程序,请单击 RESTAGE 。Swagger Petstore 现在已绑定到应用程序。是时候测试它并确保其正常工作了:将一些示例代码推送到您的 Bluemix 应用程序。
  7. 您可以向上滚动,并单击本教程的 获得代码 按钮,查看 Bluemix DevOps Services 的示例代码项目。只要您没有更改被导入 API Management 的 API 的名称,应用程序就应该可以正常工作。

    运行 git clone https://hub.jazz.net/git/integration/apimanagement-gettingstarted-sample ,将示例应用程序代码复制到您的计算机上的文件夹中。
  8. 使用文本编辑器修改在您的克隆项目中的 manifest.yml 文件,将 hostname 属性更改为您先前在此步骤中选择的应用程序的名称。保存文件。
  9. 当运行应用程序时,它会自动查找调用您的 API 所需的凭据和 URL,因为 API 被绑定到该应用程序。app.js 的第 27-32 行说明了如何轻松、可靠地发现 API 的信息:
    var petstoreCreds = appEnv.getServiceCreds(/petstore/i) var apimUrl = url.parse(petstoreCreds.url); apimUrl.query = {    'client_id': petstoreCreds.client_id,    'client_secret': petstoreCreds.client_secret };
    每当访问者使用应用程序的 UI 时,后端服务器都会使用所发现的 API URL 和凭据来调用 API 并返回响应(第 44-53 行):
    request.get({  url: url.format(requestUrl),  json: true }, function(err, resp, body) {  console.log(body);  res.send({   pets: body,   url: url.format(requestUrl)  }); }); 
  10. 运行 cf login -a https://api.ng.bluemix.net ,登录到 Bluemix API。如果出现提示,请指定您在步骤 6 中用于创建应用程序的组织和空间。
  11. 使用操作系统的命令行,将目录更改为您之前从 Bluemix DevOps Services 克隆项目的根目录。
  12. 在命令行运行 cf push 。该应用程序将被推送至 Bluemix,您会看到该应用程序已成功启动的消息。(这个过程可能需要几分钟的时间。)
  13. 在完成应用程序的部署后,通过 URL 访问它:https:// host_name .mybluemix.net/。在加载页面后,选中一个选项,然后单击按钮来查询 API。项目列表将与被后端服务器调 用的 API URL 一起返回。

步骤 7. 直接测试 API(可选)

您可以使用 Postman 或类似的工具直接测试 API,以便查看原始 API 调用,包括报头、参数,等等。此步骤将演示该选项。您会获得 API 的凭据并测试 API。

  1. 在 Bluemix 应用仪表板的左侧,单击 Environment Variables使用 IBM Bluemix 构建一个托管的 API 显示 VCAP_SERVICES 的变量,其中包括您的 Swagger Petstore API 的详细信息。我们主要感兴趣的是 credentials 部分,其中包含客户端 ID、客户端秘码和调用 API 所需要的 URL,如本例所示:
    {   "Swagger Petstore v1 :Sandbox 55490fc20cf273432455d57b":[     {       "name":"Swagger Petstore-kc",       "label":"Swagger Petstore v1 :Sandbox 55490fc20cf273432455d57b",       "plan":"Pet Store - Gold Plan :Sandbox",       "credentials":{         "client_id":"fa3dea8b-2a24-4b4f-a143-a5726bef7a41",         "client_secret":"H0cK0kP4pO6lJ1xM7pG1bY6jB1eK1rP2fG7lO3cN2dT1qA1pK3",         "url":"https://api.apim.ibmcloud.com/demoibmcom-dev/sb/petstore"       }     }   ] }
  2. 打开 Postman 程序或等效的工具(下面的截图来自 Postman)。在 URL 字段中输入此 URL,用您的环境变量的凭据替换斜体部分:

    <em>credentials.url</em>/pet/findByTags?tags=tag1&amp;client_id=<em>credentials.client_id</em>&amp;client_secret=<em>credentials.client_secret</em>

    : 使用 IBM Bluemix 构建一个托管的 API

    点击查看大图

    关闭 [x]

    使用 IBM Bluemix 构建一个托管的 API

  3. 单击 Send 运行 API 请求。如果一切正常进行,输出应该如下所示:
    [{  "id":4,  "category":{   "id":1,   "name":"Dogs"  },  "name":"Dog 1",  "photoUrls":[   "url1",   "url2"  ],  "tags":[{   "id":1,   "name":"tag1"  }] }] 

结束语

您已成功将一个 API 导入 Bluemix API Management 服务,将它发布到组织的 Bluemix 目录,并从 Bluemix 应用程序中使用该 API。干得不错!

托管的 API 提供了一个优秀而又强大的方式来控制对宝贵资源的访问权限。在这里,您可以将自己的 API 添加到 API Management,并与特定的 Bluemix 组织共享它们。

正文到此结束
Loading...