本节讲述了Restful协议穿透场景的创建过程,包括创建ESB工程、创建Restful协议相关的服务、并测试运行。通过本节你将了解到如下内容:
- 如何创建完整的Restful协议穿透场景;
- 如何在Studio中测试运行开发的业务逻辑;
- 如何通过Server运行日志查看运行结果;
本示例中通过Postman模拟一个Restful调用者,用JSON消息格式作为Restful请求的消息体。本节分为以下几个部分:
- 创建ESB工程
- 创建公共Module
- 创建HTTP Transport
- 创建HTTP Endpoint
- 创建HTTP业务服务
- 创建HTTP代理服务
- 部署运行
- URI带参数配置模式
示例如附件所示:restful_sample.zip
# 创建工程
打开ESB Studio,在资源管理器中,点击右键,选择"创建 > ESB项目"菜单项,创建工程,如下图所示。
在工程创建向导中,填写工程的基本信息,如工程名称等,这里我们创建一个名为"restful_sample"的工程,如下图所示。
单击“下一步”,设置工程的引用库,这里使用缺省设置,如下图所示。
单击“完成”,完成创建工程。创建工程后,资源管理器如下图所示。
# 创建公共Module
在资源管理器中,选中创建好的项目,鼠标右键选择“创建 > 公共Module”,创建公共Module,如下图所示。
在“公共Module”对话框中,填写Module名称等信息,如下图所示。
公共Module相关填写项的填写规则如下。
参数 说明 Module名称 Module的名称。由数字、字母、下划线(_)组成。 显示名称 Module显示名称。由数字、字母、中文、点(.)、下划线(_)组成。 版本 由数字和点(.)组成。 单击“完成”,公共Module创建完成,如下图所示。
# 创建HTTP Transport
在创建的ESB项目的“Transport”上,右键选择“创建 > HTTP类型Transport”,如下图所示。
在弹出的“创建HTTP类型Transport”界面,选择当前的工程、Module,并输入文件名及显示名称,如下图所示。
HTTP Transport基本配置项的填写规则如下。
参数 说明 选择工程 当前操作的工程。 选择Module 当前操作的公共Module。 文件名 文件名。由数字、字母、下划线(_)组成,必须以字母开头。 显示名称 显示名称。由数字、字母、中文、点(.)、下划线(_)、中横线(-)组成。 描述 对该HTTP Transport的简要描述。 单击“完成”,HTTP Transport创建完成,如下图所示。
在资源管理器中,双击创建的HTTP Transport,打开HTTP Transport编辑器,修改相关参数。如下所示。
参数 说明 ID HTTP Transport的唯一标识。HTTP Transport创建时自动生成。 显示名称 HTTP Transport的显示名称。由数字、字母、中文、点(.)、下划线(_)、中横线(-)组成。当在Developer中设置为“使用显示名称”时,该Transport显示该名称。 协议 选择http协议。 Restful 选择是,表示启用restful方式 端口 访问HTTP服务的端口。范围从1025到65535,可以选择int型的变量或常量。 HTTP Transport配置完成后,单击工具栏中的 图标保存。
# 创建HTTP Endpoint
在创建的ESB项目的“Endpoint”上,右键选择“创建 > HTTP类型Endpoint”,如下图所示。
在弹出的“创建HTTP类型Endpoint”界面,选择当前的工程、Module,并输入文件名及显示名称,如下图所示。
HTTP Endpoint基本配置项的填写规则如下。
参数 说明 选择工程 当前操作的工程。 选择Module 当前操作的公共Module。 文件名 文件名。由数字、字母、下划线(_)组成,必须以字母开头。 显示名称 显示名称。由数字、字母、中文、点(.)、下划线(_)、中横线(-)组成。 描述 对该HTTP Endpoint的简要描述。 单击“完成”,HTTP Endpoint创建完成,如下图所示。
在资源管理器中,双击创建的HTTP Endpoint,打开HTTPEndpoint编辑器,修改相关参数。如下所示。
参数 说明 ID HTTP Endpoint创建时自动生成,不可修改。 显示名称 HTTP Endpoint的显示名称,由数字、字母、中文、点(.)、下划线(_)、中横线(-)组成。当在Developer中设置为"使用显示名"时,该Endpoint显示该名称。 主机地址 HTTP Endpoint连接的服务器地址,必填。 端口 HTTP Endpoint连接的服务器端口号,范围从1025到65535。 协议 服务器提供的HTTP协议类型,支持http和https。
# 创建HTTP业务服务
在资源管理器中,选中创建好的项目,鼠标右键选择“创建 > 业务Module”,创建业务Module,如下图所示。
在“业务Module”对话框中,填写Module名称等信息,如下图所示。
业务Module相关填写项的填写规则如下。
参数 说明 Module名称 Module的名称。由数字、字母、下划线(_)组成。 显示名称 Module显示名称。由数字、字母、中文、点(.)、下划线(_)组成。 版本 由数字和点(.)组成。 单击“完成”,业务Module创建完成,如下图所示。
在新建的业务Module“com.primeton.esb.restful_sample.restaurant”的“业务服务”上,鼠标右键选择“创建 > HTTP业务服务”,创建HTTP业务服务,如下图所示。
在打开的“创建HTTP业务服务”对话框中,输入类别信息,如下图所示。
单击“完成”,在打开的“HTTP业务服务”的编辑界面中,需要选择Endpoint和填写URI信息,如下图所示。
在“HTTP业务服务”的编辑界面,单击“Endpoint*”后面的“选择...”,弹出“Http Endpoint”对话框,选择之前创建的HTTP Endpoint,单击“确定”。如下图所示。
在“HTTP业务服务”的编辑界面,输入服务提供者的URI地址,例如:/query/{id}/info,单击保存,如下图所示。
可根据需要,对请求的业务结果进行校验。
# 创建HTTP代理服务
在资源管理器中,在新建的业务Module“com.primeton.esb.restful_sample.restaurant”的“代理服务”上,鼠标右键选择“创建 > HTTP代理服务”,创建HTTP代理服务,如下图所示。
在打开的“创建HTTP代理服务”对话框中,输入类别信息,如下图所示。
单击“完成”,在打开的“HTTP代理服务”的编辑界面中,需要选择Transport和填写URI信息,如下图所示。
在“HTTP代理服务”的编辑界面,单击“Transport”后面的“选择...”,弹出“Http Transport”对话框,选择之前创建的HTTP Transport,单击“确定”。如下图所示。
在“HTTP代理服务”的编辑界面,输入URI地址,选择关联服务类型和服务名称,单击保存,如下图所示。
说明
- 线程池设置使用缺省配置。
# 部署运行
在资源管理器中,选中创建好的项目,鼠标右键单击“部署”,如下图所示。
部署完成后,ESB Studio将公共Module和业务Module部署Studio内置的ESB Server上,然后启动ESB Server,如下图所示。
ESB Server启动时,弹出启动服务器进度窗口,如下图所示。
在ESB Studio控制台,看到“ESB Server started successfully.”日志字样,表示ESB Server启动成功,如下图所示。
启动Postman,访问APIGateway提供的Restful服务,例如:http://192.168.16.114:9090/queryinfo/1,如下图所示。
本示例中,ESB Server的IP为192.168.16.114,ESB Server提供的restful服务端口为9090,访问服务地址为HTTP代理服务上暴露的URI地址“/queryinfo/1”,使用Postman发送HTTP请求(请求内容为Rest格式的报文)后,返回正常的结果,如上图所示。
# URI带参数配置模式
无参数 即ESB服务提供的代理URI与原业务服务URI之间不存在参数传递的模式,如下所示。** **代理服务:/product/all 业务服务:/service/product/query/all 客户端请求示例: /product/all?pagesize=10&pageindex=0 → /service/product/query/all?pagesize=10&pageindex=0
路径参数 即ESB服务提供的代理URI与原业务服务URI之间存在参数传递的模式,且参数存在于URI路径中,如下所示。 代理服务:/product/querydetail/{id} 业务服务:/service/product/query/{id}/detail 客户端请求示例: /product/querydetail/001 → /service/product/query/001/detail
查询参数 即ESB服务提供的代理URI与原业务服务URI之间存在参数传递的模式,且参数存在于查询参数中,如下所示。 代理服务:/product/querydetail 业务服务:/service/product/query/{id}/detail** **客户端请求示例: /product/querydetail?id=001 → /service/product/query/001/detail?id=001
模糊匹配
即ESB服务提供的代理URI与原业务服务URI之间存在参数传递的模式,且参数为模糊匹配,如下所示。
代理服务:/product/** 业务服务:/service/product/**** 客户端请求示例:
/product/query/001/detail → /service/product/query/001/detail
/product/query/all?pagesize=10&pageindex=0 → /service/product/query/all?pagesize=10&pageindex=0