美文网首页低代码产品
MuleSoft从零开始搭建 API(下)

MuleSoft从零开始搭建 API(下)

作者: 进击的鸭子 | 来源:发表于2021-12-02 16:02 被阅读0次

    本文,主要介绍的是在开发完成 API 之后,怎么发布上云并监控 API 健康。

    STEP4 验证和错误处理

    至此,我们已经闯进啊了一个 API 和在第三方客户端测试 HTTP 请求,并且将我们的 API 发布到了 Exchange。现在我们将使用 Studio 来增加验证和一个单元测试。在 Studio 中我们将使用之前创建的脚手架:
    - 使用验证模块,验证输入
    - 为一个错误条件创造一个错误处理器

    STEP4.1 验证

    将验证模块中的操作项添加到 API 实现,来确保用户输入合适的API。我们的API很简单,所以我们测试也比较简单。我们将测试在一个可以接受的范围内负载能力的大小。
    增加 Validate size 操作到 ”hello“ 项目中。

    1. 在 hello 项目工作台,打开 hello.xml 如果它并没有被打开的话,确保你的画布的视图是 Message Flow

    2. 在 Mule Palette 中将 Add modules 中的 Validate size拖拽到左侧栏

      截屏2021-11-30 下午4.10.02.png
    3. 从这个操作展示列表中,拖拽 Validate size到这个画布中,并且拖拽到 Set Payload 右侧,在这个 endpoint 模块的内部

      截屏2021-11-30 下午4.11.29.png
    1. 点击 Validate size展示的 General 配置项

      截屏2021-11-30 下午4.12.23.png
    2. 里面的值进行如下配置:

      1. Value:点击 fx 按钮将输入模式改编成表达式模式,然后输入 在这个字符输入框中输入:payload 注意结束括号已经给你提供了
      2. Min:6
      3. Max:30
      4. Error options > Message:The specified message is either too long or too short.


        截屏2021-11-30 下午4.15.43.png
    3. 在这个 Studio 的主菜单,选择 File > Save All 来保存你的变更

    4. 在画布上右击,选择 Run project hello


      截屏2021-11-30 下午4.16.50.png
    5. 然后你可以在 Console 指示台中看到 hello 已经部署,通过之前 Advanced Rest Client 这个第三方请求工具来访问:
      http://localhost:8081/api/greeting

    截屏2021-11-30 下午4.18.25.png

    这个演示,是当问候语在我们刚刚 Validate size 连接器中设置的限制范围内的正常行为。

    1. 右击画布,选择 stop project hello
      接下来测试当这个负载过小,通过debugger 来按步执行在错误触发之前 error 情况
      1. 在 hello 项目中,打开 hello.xml

      2. 点击 Set payload,然后将值变成 : hi

      3. 在 Mule Palette 中选择 Favorites > Logger 然后拖拽到 Set PayloadValidate size 之间。Logger 将会帮助我们停止这个
        流程来帮助 debug。

        截屏2021-11-30 下午4.24.32.png
        1. 右击 Set Payload 选择 Add breakpoint
          截屏2021-11-30 下午4.26.12.png
      4. 右击 Logger 然后选择 Add breakpoint

        截屏2021-11-30 下午4.28.59.png
      5. 右击 Validate size 然后选择 Add breakpoint

      6. 右击画布,选择 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 周边的虚线

    截屏2021-11-30 下午4.32.02.png
    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 用于我们设置的验证

    1. 在 Studio Mule Palette 选择 Core > On Error Propagate 然后拖拽到 Error handling 在 get:\greeting: hello-config

      截屏2021-11-30 下午4.56.18.png
    2. 在画布下方 General 选项中,配置这个 error handler:

      • Display Name: On Error Propagate
      • Settings Type:点击查询图标,从这个下拉的菜单中选择 VALIDATION:INVALID_SIZE
      • 不要改变别的默认值


        截屏2021-11-30 下午4.58.54.png
    3. 拖拽 Set Payload 连接器到新的 On Error propagate error handler

    4. 配置一个新的 Set Payload 连接器:

      1. 双击 Set Payload 打开 General 选项
      2. 在 Settings > Value: 将 payload 替代成 error.description


        截屏2021-11-30 下午5.01.31.png
    5. 点击 File > Save All 来保存你的变更

    6. 增加端点到 Set Payload、Logger 和 Validate size 如果你之前把这些端点移除了的话。

    7. 右击画布,选择 Debug project hello

    8. 在这个程序部署之后,发送 http://localhost:8081/api/greeting 请求进行测试,然后通过黄色箭头观察每一步骤

    9. 当你触达到 Set Payload 的 On Error propagate,你可以看到我们在 Validate size 中创建的错误消息的 payload 就是当前 payload 对象


      截屏2021-11-30 下午5.06.50.png
    10. 当你执行到 message flow 最上方的 APIKit Router ,你可以看到错误信息被原始的 payload 中的
      Hi 替代。
      ![[图片上传中...(截屏2021-11-30 下午5.11.40.png-af34bc-1638432054241-0)]

    11. 当你运行完所有的步骤,并且观察请求的返回情况,你可以看到 500 Server Error 伴随着错误信息 被一起返回


      截屏2021-11-30 下午5.11.40.png
    12. 把 payload 重新设置成原先的 “Today the greeting is Hello”

    13. 设置原先Studio视图,Window > perspective > open Perspective > Mule Degisn
      接下来我们将发布我们的修改后的 API。

    STEP4.3 发布修改后的 API

    向 Exchange 中提交改进后的 API:

    1. 在 Studio 的 Package Explorer ,右击 hello 项目
    2. 选择 Anypoint Platform > Publish to Exchange
    3. 确保选择跟你之前一样选择同一个 business group。然后选择 Finish
    4. 版本号是自动给你增加的
    5. 在 project type 中选择 Example
    6. 点击 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:

    1. 在 Studio 的 Mule Design 透视图中,右键单击Package Explorer 中的 hello 项目,然后选择 Anypoint Platform > Deploy to CloudHub
    截屏2021-12-02 上午11.01.22.png
    1. 如果出来一个弹框,你就输入你 Anypoint Platform 的用户名和密码,点击登陆。

    2. 你必须要在你的账号沙盒中去部署这个 API。如果你看到 Design 环境选项而不是 Sanbox:

      1. 选择 Design 来启动切换环境对话框
      2. 选择 Sandbox
      3. 点击


        截屏2021-12-02 上午11.05.09.png
    3. 输入 hello-greeting-firstname-lastname;每个 app 和 api 名称在 CloudHub上都必须是唯一的。我这个样例,将使用 hello-greeting-c-zh。

    4. 确认这个 Deployment Target 是 CloudHub

    5. 不要改变其它默认选项

    6. 点击 Deploy Application,在短暂的停留之后,一个窗口将展示这个部署状态。

      截屏2021-12-02 上午11.08.08.png
    7. 选择 Open in Browser来查看Runtime Manager显示的状态

      截屏2021-12-02 上午11.08.55.png

    当这个项目成功部署之后,Runtime Manager器将会显示的状态为 Started

    1. 测试这个 API 部署,从 Advanced Rest Client(或浏览器)发送请求:


      截屏2021-12-02 上午11.13.09.png
      1. 点击 Started 来显示 App url
      2. 复制这个值: hello-greeting-c-zh.us-e2.cloudhub.io
      3. 在 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 的健康:

    1. 从 Anypoint Platform 入口中进入,Runtime Manger
    2. 切换到 Sandbox 环境
    3. 点击任意一行
      如果你看到一些代理请求的测试,你可以 Mule messages 界面中看到流量信息
      另外,你还可以在 Runtime Manager 中获得以下信息:
      • 点击 Logs 来看查看所选程序在过去 30 天的每笔交易
      • 点击 Settings 来查看这个程序的配置,你同样可以在 Setting 页面配置监控和可视化工具


        截屏2021-12-02 上午11.52.44.png

    深入探讨

    你 API 执行的工作越多,Runtime Manager 可以提供的数据就越多。 Runtime Manager documentation .具体可以查看 Runtime Manager 文档。

    相关文章

      网友评论

        本文标题:MuleSoft从零开始搭建 API(下)

        本文链接:https://www.haomeiwen.com/subject/bfoyxrtx.html