本文,主要介绍的是在开发完成 API 之后,怎么发布上云并监控 API 健康。
STEP4 验证和错误处理
至此,我们已经闯进啊了一个 API 和在第三方客户端测试 HTTP 请求,并且将我们的 API 发布到了 Exchange。现在我们将使用 Studio 来增加验证和一个单元测试。在 Studio 中我们将使用之前创建的脚手架:
- 使用验证模块,验证输入
- 为一个错误条件创造一个错误处理器
STEP4.1 验证
将验证模块中的操作项添加到 API 实现,来确保用户输入合适的API。我们的API很简单,所以我们测试也比较简单。我们将测试在一个可以接受的范围内负载能力的大小。
增加 Validate size 操作到 ”hello“ 项目中。
-
在 hello 项目工作台,打开 hello.xml 如果它并没有被打开的话,确保你的画布的视图是 Message Flow
-
在 Mule Palette 中将 Add modules 中的 Validate size拖拽到左侧栏
截屏2021-11-30 下午4.10.02.png
-
从这个操作展示列表中,拖拽 Validate size到这个画布中,并且拖拽到 Set Payload 右侧,在这个 endpoint 模块的内部
截屏2021-11-30 下午4.11.29.png
-
点击 Validate size展示的 General 配置项
截屏2021-11-30 下午4.12.23.png
-
里面的值进行如下配置:
- Value:点击 fx 按钮将输入模式改编成表达式模式,然后输入 在这个字符输入框中输入:payload 注意结束括号已经给你提供了
- Min:6
- Max:30
-
Error options > Message:The specified message is either too long or too short.
截屏2021-11-30 下午4.15.43.png
-
在这个 Studio 的主菜单,选择 File > Save All 来保存你的变更
-
在画布上右击,选择 Run project hello
截屏2021-11-30 下午4.16.50.png -
然后你可以在 Console 指示台中看到 hello 已经部署,通过之前 Advanced Rest Client 这个第三方请求工具来访问:
http://localhost:8081/api/greeting
这个演示,是当问候语在我们刚刚 Validate size 连接器中设置的限制范围内的正常行为。
- 右击画布,选择 stop project hello
接下来测试当这个负载过小,通过debugger 来按步执行在错误触发之前 error 情况-
在 hello 项目中,打开 hello.xml
-
点击 Set payload,然后将值变成 : hi
-
在 Mule Palette 中选择 Favorites > Logger 然后拖拽到 Set Payload 和 Validate size 之间。Logger 将会帮助我们停止这个
截屏2021-11-30 下午4.24.32.png
流程来帮助 debug。
- 右击 Set Payload 选择 Add breakpoint
截屏2021-11-30 下午4.26.12.png
- 右击 Set Payload 选择 Add breakpoint
-
右击 Logger 然后选择 Add breakpoint
截屏2021-11-30 下午4.28.59.png
-
右击 Validate size 然后选择 Add breakpoint
-
右击画布,选择 Debug project hello
截屏2021-11-30 下午4.28.59.png
-
可以选择 Remember my decision 然后点击 Yes
8. 打开 REST 客户端,然后发送 /greeting 请求进行测试http://localhost:8081/api/greeting
9. 返回到 Studio 然后注意,在 Set payload 周边的虚线
10. 在画布中,选择 set payload来打开 set payload 看到它的 value 是 hi,2个字符
11. 点击位于debugger窗口上方的黄色箭头标志
next-toggle.png
12. 再次点击,则会移动到 Validate size 连接器
截屏2021-11-30 下午4.35.39.png
13. 再点击这个按钮,你会注意一个你定义的 error message 出现在debugger 面板的 error 对象中,增加一个红点虚线来验证 validate size 连接器
截屏2021-11-30 下午4.37.41.png
14. 紧接着再点击这个黄色箭头按钮,注意,当前的画布已经展示在你的 message flow 顶部,红色的虚线出现在 APIkit Router 周边,导入时添加的脚手架之一。这个 router 处理器也是报错的。
15. 再点击黄色箭头按钮,完成这个流程,注意,Mule debugger 面板现在是空的,因为这个流程已经结束了
16. 在 Advanced Rest Client 中你可以看到 500 Server Error 和 payload 值。
要查看我们定义的错误返回,而不是有效负载,我们需要配置错误处理器。
17. 画布右击,选择 stop project hello
18. 选择 window > perspective > open perspective > mule deign 来退出 debugger 视图。
截屏2021-11-30 下午4.44.56.png
STEP4.2 错误处理
现在我们将增加一个 error handler 用于我们设置的验证
-
在 Studio Mule Palette 选择 Core > On Error Propagate 然后拖拽到 Error handling 在 get:\greeting: hello-config
截屏2021-11-30 下午4.56.18.png
-
在画布下方 General 选项中,配置这个 error handler:
- Display Name: On Error Propagate
- Settings Type:点击查询图标,从这个下拉的菜单中选择 VALIDATION:INVALID_SIZE
-
不要改变别的默认值
截屏2021-11-30 下午4.58.54.png
-
拖拽 Set Payload 连接器到新的 On Error propagate error handler
-
配置一个新的 Set Payload 连接器:
- 双击 Set Payload 打开 General 选项
-
在 Settings > Value: 将 payload 替代成 error.description
截屏2021-11-30 下午5.01.31.png
-
点击 File > Save All 来保存你的变更
-
增加端点到 Set Payload、Logger 和 Validate size 如果你之前把这些端点移除了的话。
-
右击画布,选择 Debug project hello
-
在这个程序部署之后,发送 http://localhost:8081/api/greeting 请求进行测试,然后通过黄色箭头观察每一步骤
-
当你触达到 Set Payload 的 On Error propagate,你可以看到我们在 Validate size 中创建的错误消息的 payload 就是当前 payload 对象
中
截屏2021-11-30 下午5.06.50.png -
当你执行到 message flow 最上方的 APIKit Router ,你可以看到错误信息被原始的 payload 中的
Hi 替代。
![[图片上传中...(截屏2021-11-30 下午5.11.40.png-af34bc-1638432054241-0)] -
当你运行完所有的步骤,并且观察请求的返回情况,你可以看到 500 Server Error 伴随着错误信息 被一起返回
截屏2021-11-30 下午5.11.40.png -
把 payload 重新设置成原先的 “Today the greeting is Hello”
-
设置原先Studio视图,Window > perspective > open Perspective > Mule Degisn
接下来我们将发布我们的修改后的 API。
STEP4.3 发布修改后的 API
向 Exchange 中提交改进后的 API:
- 在 Studio 的 Package Explorer ,右击 hello 项目
- 选择 Anypoint Platform > Publish to Exchange
- 确保选择跟你之前一样选择同一个 business group。然后选择 Finish
- 版本号是自动给你增加的
- 在 project type 中选择 Example
-
点击 Finish
Studio 想你展示最新发布的 API 版本链接,可以复制并分享。
截屏2021-11-30 下午5.24.19.png
接下来,我们将部署发布我们的 API,这样任何人都可以发送一个请求给 /greeting endpoint.
STEP 5 部署 API 到 CloudHub
到这一步,你已经完成了一个在 Studio 中包含你心的 API 接口的Mule app 的创建和测试。接下来,我们将把这个 API 部署到 CloudHub。
首先,我们将创造一个 API 代理,可以使我们能够在 Exchange 上测试我们的 API。
然后,我们将设置限速策略,来保护我们的 API 免受 denial-of-service 攻击。
STEP 5.1 部署 API 到 CloudHub
要以 Mule app 的形式来部署这个 api:
- 在 Studio 的 Mule Design 透视图中,右键单击Package Explorer 中的 hello 项目,然后选择 Anypoint Platform > Deploy to CloudHub
-
如果出来一个弹框,你就输入你 Anypoint Platform 的用户名和密码,点击登陆。
-
你必须要在你的账号沙盒中去部署这个 API。如果你看到 Design 环境选项而不是 Sanbox:
- 选择 Design 来启动切换环境对话框
- 选择 Sandbox
-
点击
截屏2021-12-02 上午11.05.09.png
-
输入 hello-greeting-firstname-lastname;每个 app 和 api 名称在 CloudHub上都必须是唯一的。我这个样例,将使用 hello-greeting-c-zh。
-
确认这个 Deployment Target 是 CloudHub
-
不要改变其它默认选项
-
点击 Deploy Application,在短暂的停留之后,一个窗口将展示这个部署状态。
截屏2021-12-02 上午11.08.08.png
-
选择 Open in Browser来查看Runtime Manager显示的状态
截屏2021-12-02 上午11.08.55.png
当这个项目成功部署之后,Runtime Manager器将会显示的状态为 Started
-
测试这个 API 部署,从 Advanced Rest Client(或浏览器)发送请求:
截屏2021-12-02 上午11.13.09.png- 点击 Started 来显示 App url
- 复制这个值: hello-greeting-c-zh.us-e2.cloudhub.io
- 在 Advanced Rest Client 中发送这个你刚刚复制的 URI 请求,确保这个 API endpoint 是 /greeting
GET
http://hello-greeting-c-zh.us-e2.cloudhub.io/api/greeting
4. 如果你看到的是 200 OK,并且这个你定义的响应内容“Today the greeting is Hello.” 被返回了,说明你创建的这个 API 已经发布成功了。
现状,我们需要为这个 API 创建 API 代理应用,来限制访问保护我们的服务。我们需要加入限速策略,这个是可以在 API 运行过程中配置的。
STEP 6 操作已发布的 API
Mulesoft 提供了一些工具来帮助你管理已经发布的 API。
runtime-overview.png
检查你 API 的健康:
- 从 Anypoint Platform 入口中进入,Runtime Manger
- 切换到 Sandbox 环境
- 点击任意一行
如果你看到一些代理请求的测试,你可以 Mule messages 界面中看到流量信息
另外,你还可以在 Runtime Manager 中获得以下信息:- 点击 Logs 来看查看所选程序在过去 30 天的每笔交易
-
点击 Settings 来查看这个程序的配置,你同样可以在 Setting 页面配置监控和可视化工具
截屏2021-12-02 上午11.52.44.png
深入探讨
你 API 执行的工作越多,Runtime Manager 可以提供的数据就越多。 Runtime Manager documentation .具体可以查看 Runtime Manager 文档。
网友评论