此处可先验证一下 API Designer 的安装,在命令行控制台执行 apic –v,返回 APIC 的版本号则表示安装正确。
在命令行控制台中执行命令 apic loopback,该步骤目的是创建一个本地 Node.js 应用,执行命令之后会进入交互式,首先要求为应用起一个名字这里假设应用名称为 flightAPI,这个名字会作为 API 的产品名称。
下一步系统会询问应用放在哪个目录,输入你的目录名称,假设为 flightInfo。再下一步系统会询问是要创建一个空的应用还是创建样例代码,我们只需要空的应用,所以选择第一个选项,回车确定。如图 4 所示。
点击查看大图
完成了上边的问答,API Designer 会在本地创建所需的目录结构以及依赖包。
点击查看大图
在命令行中,CD 到刚才创建的目录 flightInfo 下,执行 apic edit,等一会浏览器会自动启动并打开登录页面,点击"使用 Bluemix 登录"。
点击查看大图
此登录方式可以在启动 apic designer 之后,自动关联到登录账号的组织和空间,方便在发布 API 时选择目标。推荐使用这种登录方式。
在命令行中执行 apic login,并按要输入服务器地址,用户名以及密码。如图 7
点击查看大图
命令行登录过程可能会要求你输入一次性密码,当命令行出现提示的时候,按一下空格,浏览器会自己打开一次性密码的连接,但是却是 null,此时点击重新生成,然后用自己的 Bluemix ID 登录一下,即可获得一次性密码。如图 8
点击查看大图
登录之后,可以看到 API 项目已经创建。
点击查看大图
选择界面上的"数据源"标签,点击"添加"按钮,此时弹出输入框,为数据源起个名字,确定之后点击"创建"按钮。
点击查看大图
下一步选择数据库的类型,由于之前创建的数据库为 mySQL,所以选择 mySQL。
选择类型之后,如果这是第一次创建 mySQL 数据源,系统会提示连接器并没有安装,此时需要打开命令行,CD 到项目下执行图 12 红框中的命令。
点击查看大图
执行命令之后,npm 将自动安装连接器。
点击查看大图
连接器安装好之后,下拉菜单中的 MySQL 变为可用。选择 MySQL,出现配置界面,填入数据源信息。(步骤 1.3 的数据源信息)
点击查看大图
添加完成,可以点击界面右上角测试按钮,测试连接。测试成功会出现"数据源连接测试成功"提示。
成功配置了数据源之后,便可以从数据库中发现数据模型,点击界面上的发现按钮,
点击之后,可以看到数据库中的表,选择要生成数据模型的表,点击"select properties"。
点击查看大图
此时出现图 16 界面,选择需要的字段之后,点击 "选择"以生成数据模型(此图显示为全选)。
点击查看大图
选择完字段,点击"选择"调至下一界面,点击"generate",生成模型。此时再切换到模型标签,可见已生成的数据模型,名称为 flightinfo。
点击查看大图
点击 flightinfo,可看到数据模型的详细信息,如图 18 标识复选框选中的字段,将会作为 API 操作中的 id,使用{id}作为 API 路径的一部分。
点击查看大图
模型生成之后,相关 API 的操作也将已自动创建,点击 API 标签下的 flightAPI,可见下图。在侧栏"路径"下,相关的 API 都已生成。我们可以按照自己的需要,修改或者删除某些操作。
点击查看大图
每个 API 都包含具体的增删改查操作,例如路径/flightinfos,其中的 post 操作表示更新一个航班信息,put 操作表示增加一个航班信息,get 则表示查询。/flightinfos/{id}/exists 则表示根据 id 号查询该航班是否存在。
点击查看大图
API 中的每个操作都配置了安全性,为了测试方便,可以将"启用安全性定义中"的复选框去掉。正式发布的 API 产品可根据具体情况,增加或者去除安全性配置。
点击查看大图
为了在本地测试 API,我们需要启动 Gateway 服务。切换至"汇编"标签,点击界面左下角的启动按钮,Gateway 启动之后,状态将会从 Stopped 变成"Running"。
点击红圈中的测试按钮,开始测试
点击查看大图
在图 23 测试界面中,选择一个 API 操作,然后在 filter 处填写调用参数。filter 的写法比较特殊,它用 json 字符串表示,可以用 field 指定返回哪些字段,用 where 作为查询条件,用 limit 指定返回结果长度等等,图中的写法表示查询所有从 beijing 到 shanghai 的航班信息。
点击查看大图
测试结果如图 24。正确返回的查询结果。在 API 5.0.2 版本中,如果返回值有中文,可能会出现返回值不完整的问题。部署到 Bluemix 上则没有这个问题。
点击查看大图
本地的应用和 API 已经完成,为了将本地的 API 以及应用发布到 Bluemix 上去,我们需要指定发布的目的地,也就是发布目标。首先点击界面右上角的"发布"按钮,选择"添加和管理目标"。
点击查看大图
然后选择"添加 IBM Bluemix 目标",由于我们之前使用了命令行方式登录,所以此处不用再次登录,便可以直接看到账号下的组织以及 API 目录。一般情况下,发布目录选择 sandbox 即可。选完目录,点击下一页。(此处需要解释一下,我在部署的时候,选择了一个自己之前测试创建的目录"errox",该目录与 sandbox 功能完全一致,读者只需选择自带的 sandbox)。
点击查看大图
为了将把本地的 Node.js 应用发布为 Bluemix 上的一个新应用,我们在这里为新应用取个名字,假设叫 demo-application,然后点击右方"+"号,此时保存按钮变为可用,点击保存。
点击查看大图
再次点击发布按钮,可以看到我们刚才创建的发布目标,如图 28,点击该目标,出现图 29 所示,选择"发布应用程序"复选框,点击发布,把本地的代码发布到 Bluemix 上。
点击查看大图
点击查看大图
API Designer 开始工作,打包,上传,部署。完成之后可以看到命令行控制台出现了如下信息,红圈的两处是重要的信息,第一处表示该应用程序对外提供的 URL,第二处则是安全策略信息。
点击查看大图
此时如果登录 Bluemix,可看到一个名为 demo-application 的应用已经创建并在运行。
在发布 API 之前,我们先思考一下,当外部应用调用 API 的时候,API 会去调用后台应用,也就是我们刚才部署的 Node.js 应用,那么 APIC 怎么知道后台应用的地址的呢?答案是我们要配置,让 API 知道后台应用的地址。我们回到 API Designer 的汇编界面,点击图中 invoke 节点,可以在界面右端看到弹出的配置界面,默认情况下,配置界面的 URL 写的是$(runtime.url)$(request.path)$(request.search),而 TLS 概要文件则是空的。我们需要改动这个 URL,将$(runtime.url)修改为图 30 中第一个红框中的内容(需在最前方加上 https),这样 API 就会通过这个 URL 去访问到后台应用。同理,将第二个红框中的 client:Loopback-client 填入 TLS 概要文件。完成后如图 31。
点击查看大图
再次点击发布按钮,选择登台或发布产品,然后选择我们的 API 产品,Node.js 代码已经发布上去了,这一步只要发布 API。
点击查看大图
发布完成之后,我们可以到 Bluemix 上的 APIC 管理界面查看我们的 API,点击图 33 中的 SandBox 目录。
点击查看大图
可以看到已发布的产品,flightAPI 就在此列,如图 34。至此,我们的应用以及 API 就全都部署到 Bluemix 上了。下一步可以在 API 的 portal 中测试和订阅了。
点击查看大图
在默认的情况下,IBM APIC 的 portal 并没有启用,我们需要在产品目录的设置界面里,选择启用 IBM Developer Portal,如图 35.
点击查看大图
通过图 35 中的 Portal URL 登录 Portal,在 API 产品中,可以看到我们的 API 详情,外界开发人员都可以通过这个 Portal 来查看、测试或者订阅 API。而且在 Portal 中,还提供了多种语言的测试代码,为不同环境的产品开发提供便利。
点击查看大图
我们也可以在 Portal 中很方便的测试一个 API,例如我们测试一下这个 API:
https://api.us.apiconnect.ibmcloud.com/shbjicnibmcom-4test/errox/api/flightinfos/{id},
这个 API 的 get 操作表示根据 id 查询该航班信息,我们随便填写一个 4,调用操作,如图 36,可见状态码 200 OK,并且返回了航班信息。
也可以这么测试,直接在浏览器访问
https://api.us.apiconnect.ibmcloud.com/shbjicnibmcom-4test/errox/api/flightinfos/4
点击查看大图
本文最终生成并发布的 API 在这里中均可以找到并测试。
本教程展示了如何使用 API Designer 创建、测试以及发布一套 API。在此种模式下,企业可以迅速构建自己的 API 并管理整个生命周期。
IBM API Connect
StrongLoop
IBM API Connect knowledgecenter
来源: http://www.infoq.com/cn/articles/null