MuleSoft系列(四)-用Anypoint Studio创建一个Mule应用程序
在MuleSoft中,创建Application的方式有三种
- Flow Designer:用于构建连接系统并使用API的集成应用程序的Web应用程序
- API Designer:用于设计,记录和模拟API的Web应用
- Anypoint Studio:桌面IDE,用于实现API和构建集成应用程序
那么来看看如何使用Anypoint Studio创建一个Mule应用程序:
打开Anypoint Studio,新建一个Mule Project,输入项目名称:BolgTest
在创建Mule Project的界面上,可以看到整个界面核心分为:包资源管理器(Package Explorer)、画布(Canvas)、mule 组件库(Mule Palette)、控制台(Console)
- 包资源管理器:项目文件夹
- 画布:Anypoint studio使用的组件都是直接拖拽搞定的,所以操作界面被称为画布
- Mule 组件库:Mule Palette直译过来应该是Mule 调色板,不过这东西本质上是很多Mule的组件,拖到画布上就能使,所以我翻译成组件库
- 控制台:输出日志,查看组件详细信息的区域
MuleSoft出的这个Anypoint Studio一般来说不需要我们强编码,他的体系更多的是一种配置化的实现,所有的组件都直接拖到画布上进行配置,从这一点来说,很类似.Net的开发模式,甚至更加简单,那么我们先拖一个HTTP的组件到画布上,命名为:TestHttpListener
然后点击 Basic Setting → 加号,打开 Global Element Properties窗口,确认参数配置是否为下列值
- Host: 0.0.0.0
- Port:8081
点击OK,然后在Path 上填个测试的接口地址,比如 /test,最后Apply Changes.
接下来配置输出内容,从Mule 组件库拖一个Set Payload组件到画布上
修改Set Payload组件的属性,设置为 Test Message
Tips: Set Payload的属性,设置Value的时候有两种模式,一种是公式类型,也就是动态字段,一种就是文字类型,这里使用文字模式作为测试效果
我们可以启动这个项目,右键画布,选择 Run Project,此时会看到控制台开始输出启动日志,也就是说这个Mule应用程序已经成功启动
打开接口测试工具,选择Get请求,地址为:http://localhost:8081/test,测试接口请求结果会发现,返回信息是我们输入的 ”Test Message“
OK,在上面的Demo搞定后,我们来尝试链接MySQL数据库,这里会借助MuleSoft官方的测试接口进行
回到Anypoint Studo,关闭项目,然后右键删除Set Payload组件,在Mule组件库里面找Database,选择Select 类型,然后拖到画布上
接下来配置MYSQL的数据库连接信息,点击Basic Setting 右侧的加号,打开 Global Element Properties属性窗口,将Connection 设置为MySQL Connection,然后是数据库账号信息,分别如下:
- host: "mudb.learn.mulesoft.com"
- port: "3306"
- user: "mule"
- password: "mule"
- database: "training"
接着下载MySQL JDBC驱动程序,点击Configure按钮,选择Add Maven dependency,搜索mysql- ,在显示列表中选择 mysql:mysql-connector-java,点击Edit selected, 再点击Finish,然后等待MySQL JDBC驱动器的下载
下载完成后,回到Global Element Properties,点击Test Connection按钮,应该会得到一个连接成功的信息,然后就可以关闭弹窗,关闭Global Element Properties窗口,回到主界面
Tips: 如果链接数据库失败,请确认3306端口的访问有没有被占用,或者被防火墙挡住
完成对数据库的链接配置后,我们写入SQL语句:SELECT * FROM american
此时如果你直接通过接口测试工具去访问接口,会得到一个异常,这是因为还没有配置数据输出组件
在Mule组件库中拖一个名为Transform Message的组件到画布上,在Transform Message的属性视图中,我们修改输出类型为output application/json,并将{}替换为payload,保存
然后重新启动Mule应用程序,通过接口测试工具访问接口Test,可以看到响应状态200,并返回对应的JSON信息
根据之前在Anypoint平台的操作,接下来我们要尝试的就是将接口传递回来的信息转义成其他结构
点击blogtestFlow,在属性视图中切换到Metadata,点击Add metadata, 选择Output:Payload,点击编辑,在新的窗口点击Add按钮,设置Type Id为:american_flights_json,选择Type为JSON,选择Schema为Example,然后打开示例文件american-flights-example.json,点击Select
american-flights-example.json 文件内容如下:
[{ "ID": 1, "code": "ER38sd", "price": 400.00, "departureDate": "2016/03/20", "origin": "MUA", "destination": "SFO", "emptySeats": 0, "plane": { "type": "Boeing 737", "totalSeats": 150 } }, { "ID": 2, "code": "ER45if", "price": 345.99, "departureDate": "2016/02/11", "origin": "MUA", "destination": "LAX", "emptySeats": 52, "plane": { "type": "Boeing 777", "totalSeats": 300 } }]
回到Transform Message属性视图,现在看到的界面如下:
接下来就是拖拽字段进行关联映射
-
ID → ID
-
price → price
-
totalSeats → plane > totalSeats
-
toAirport → destination
-
takeOffDate → departureDate
-
fromAirport → origin
-
seatsAvailable → emptySeatsplane
-
planType → plane > type
比较特殊的,将两个字段映射到同一个字段,会进行字符串的链接
- code1 → code
- code2 → code
字段映射成功后,保存修改,然后重新运行项目,通过接口测试工具查看接口返回值,前后JSON结构对比如下:
回到Anypoint Studio,我们发现接口已经调用成功,但是从接口描述上还没有接口返回数据的示例,那么怎么做呢?回到Transform Message属性视图,点击Preview,点击 ”Create required sample data to execute preview“, 在input部分,出现一个新的页签payload,其中包含输入元数据生成的样本数据,在output部分,也可以看到对应的输出JSON示例,不过看到很多???,在input中用任意字符串替换???即可
完成上述步骤后,我们复制一份流bolgtestFlow,粘贴在画布的下方,这一过程直接Ctrl + C 然后在画布上Ctrl + V即可,如下图:
将第二个流程更名为getFlightsByID,方便调用和记忆,然后点击getFlightsByID中的HTTP监听器,修改路径包含一个请求ID
然后修改数据库中的查询语句,同时传入请求参数ID
保存然后运行项目,在接口测试工具上测试新的接口,可以看到,传入不同的参数ID能拿到不同的记录数据
以上是对MuleSoft借助Anypoint Studio开发的流程示例,以及一个简单的get请求
本文来自博客园,作者:Ricardo.M.Lu,转载请注明原文链接:https://www.cnblogs.com/luqinghua/p/12790525.html