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 组织之间得到共享。 ”
运行应用程序
获取代码
Swagger 文件代表一个先前已经存在的 API,它的实现位于 https://github.com/swagger-api/rails-petstore 上。
您可以使用 API Manager 从头开始创建 API,也可以根据 Swagger 或 Web Services Description Language (WSDL) 定义导入一个现有的 API。出于本教程之目的,您将通过 swagger.io 导入 Pet Store 示例。
您可以通过 URL 上传或引用一个 Swagger 文档。在 Add API From Swagger Definition 对话框中,将以下 URL 粘贴到 Swagger URL 字段中:
https://raw.githubusercontent.com/mhamann/apim-sample/master/petstore.json
让 Username 和 Password 字段保留空白,然后单击 Load 。
点击查看大图
关闭 [x]
/v2
更改为 /petstore
。 每个 API 都必须是 计划 的一部分,然后才可以对其进行发布和调用。API Management 使用计划来管理对 API 资源的访问权限,设置速率限制,并将 API 放进各种环境中(沙箱、测试、生产环境等)。一个计划可以包含来自任意数量的 API 的资源,以便支持采用不同速率限制对资源分组进行访问。在这一步中,将会创建一个新的计划,将您的 API 资源添加到该计划中,设置速率限制,并部署该计 划。在本教程后面的操作中,您将发布计划,以便在 Bluemix 中使用它。
点击查看大图
关闭 [x]
可为每个资源单独设置速率限制,也可以为整个计划进行设置。如果在计划级别采用速率限制,那么该限制会被应用到该计划中的所有资源。
单击 Rate limit 部分下面的编辑图标,设置计划的速率限制。设置速率限制为:10,000
requests per 1
Days,然后单击 Apply 。 Deploy
图标显示部署菜单。等到 Sandbox 选项出现,然后选中它。几分钟后,您应该会看到一个成功通知: 此时,计划已被部署,并可随时与他人共享。
API Management 的核心原则之一就是允许他人使用您的 API。API Management 与 Bluemix 的结合使用使得 API 可以在不同 Bluemix 组织之间得到共享。要与其他组织共享 API,请遵循此步骤;否则,您可以跳到步骤 5。
已经是现有 Bluemix 用户的受邀者必须在其组织中拥有 Manager 或 Billing Manager 的角色。没有 Bluemix 帐户的用户会看到提示,要求在继续操作之前创建一个帐户。
单击 + Bluemix Organization 按钮邀请其他 Bluemix 用户将其组织与您的组织关联在一起。关联只是使您将来能够与该组织一起共享 API。在受邀用户接受通过电子邮件发送的邀请之前,新组织不会显示在开发人员组织的列表中。
几分钟后,您会看到一个通知,指示发布已成功。
您已经在 API Manager 中成功地创建了一个 API,并将其发布到 Bluemix。现在,它显示在您的组织的 Bluemix 目录中。这个过程的最后一步是配置 API,将它绑定到某个应用程序,并观察数据流!您将创建一个新的 Node.js 应用程序,并配置您的 API,将其绑定到该应用程序,然后将一些代码推送给应用程序,以便向 API 提供一个简单的 Web 前端。
点击查看大图
关闭 [x]
点击查看大图
关闭 [x]
您可以向上滚动,并单击本教程的 获得代码 按钮,查看 Bluemix DevOps Services 的示例代码项目。只要您没有更改被导入 API Management 的 API 的名称,应用程序就应该可以正常工作。
运行git clone https://hub.jazz.net/git/integration/apimanagement-gettingstarted-sample
,将示例应用程序代码复制到您的计算机上的文件夹中。 host
和 name
属性更改为您先前在此步骤中选择的应用程序的名称。保存文件。 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) }); });
cf login -a https://api.ng.bluemix.net
,登录到 Bluemix API。如果出现提示,请指定您在步骤 6 中用于创建应用程序的组织和空间。 cf push
。该应用程序将被推送至 Bluemix,您会看到该应用程序已成功启动的消息。(这个过程可能需要几分钟的时间。) 您可以使用 Postman 或类似的工具直接测试 API,以便查看原始 API 调用,包括报头、参数,等等。此步骤将演示该选项。您会获得 API 的凭据并测试 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" } } ] }
打开 Postman 程序或等效的工具(下面的截图来自 Postman)。在 URL 字段中输入此 URL,用您的环境变量的凭据替换斜体部分:
<em>credentials.url</em>/pet/findByTags?tags=tag1&client_id=<em>credentials.client_id</em>&client_secret=<em>credentials.client_secret</em>
:点击查看大图
关闭 [x]
[{ "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 组织共享它们。