本文介绍如何使用Postman调试云上Spring Cloud或Dubbo服务接口功能。
背景信息
云端服务接口一般只能在集群内部访问,不便于服务接口的测试验证。EDAS提供Postman访问能力,在运行Postman脚本时,通过拉起云端测试引擎发起接口调用,可以提高接口的测试验证效率。整体链路如下图所示。
权限说明
为防止对云上环境内的接口误调用,在运行Postman脚本前您需具备以下权限。
目标应用的读权限:能够选择该应用发起接口访问。
接口访问权限:能够对接口进行成功调用。
- 登录EDAS控制台。
在左侧导航栏,选择系统管理 > 权限助手。
在权限助手页面,单击创建权限策略。
在创建权限策略配置向导页面的创建自定义权限策略页签,设置权限策略的策略名称和备注。
在创建自定义权限策略页签,单击新增权限语句,在加授权语句面板,设置对应应用的查看权限和接口访问权限,然后单击确认。
在权限效力下方,选择允许。
在操作与资源授权区域的左侧权限列表,选择应用 > 查看应用和应用 > 接口访问,在右侧资源列表中根据您的需求设置对应的地域、微服务空间和应用。
在创建权限策略配置向导页面,单击下一步。
在策略预览页签预览权限,根据页面提示在RAM控制台创建自定义权限策略,并授权给对应的RAM用户,然后单击完成。具体操作,请参见步骤三:创建RAM用户并添加授权。
控制台面板提示新增策略授权成功,单击返回列表查看,返回权限助手页面,查看新建的权限策略模板。
操作步骤
步骤一:导出Postman脚本
- 登录EDAS控制台。
在左侧导航栏,选择流量管理 > 微服务治理 > Spring Cloud (或流量管理 > 微服务治理 > Dubbo)。
在服务查询页面,单击批量导出Postman,下载ZIP包到本地并解压。
步骤二:将脚本导入Postman程序
下载Postman程序,安装完成后,打开Postman。
说明Postman版本需大于v8.3.0 。
单击Import,选择导出Postman脚本解压后的文件,再次单击Import即可完成导入。
导入后,如下图所示:
①:表示微服务空间名称/应用名称。
②:表示服务名称。
③:表示服务下的方法(或接口)。
步骤三:配置账号AccessKeyID及AccessKeySecret
单击导入后的微服务空间名称/应用名称,在Variables页签,填写您账号的AccessKeyID及AccessKeySecret,可设置在INITIAL VALUE或CURRENT VALUE列 。
配置完成后,单击图标保存。
步骤四:发送Postman请求
单击服务下的方法(或接口),然后单击Send发送请求。您可自定义配置方法(或接口)的参数。具体操作,请参见参数配置。
说明首次发送请求时,需初始化云端测试引擎,大概持续20~30秒左右。初始化引擎之后,在1个小时内无需重新初始化。
单击Console查看初始化过程。
调用成功后,切换至Visualize页面查看请求结果。
(可选)步骤五:调用特定服务提供者IP
默认情况下,执行脚本时,EDAS先查询当前服务的所有服务提供者,从中选择一个发起调用请求。如您希望调用指定服务提供者,可通过以下方式指定。
Dubbo类型服务
地址格式:dubbo://服务名称@IP:端口/方法(参数)。
示例:
dubbo://org.apache.dubbo.springboot.demo.DemoService@192.168.0.100:20880/echo()
该示例中指定调用
192.168.0.100:20880
该服务提供者,org.apache.dubbo.springboot.demo.DemoService
为服务名,echo
为方法名,参数为空。
Spring Cloud类型服务
地址格式:http://服务名称@IP:端口/路径。
示例:
http://service-provider@192.168.0.101:8080/echo 。
该示例中,指定调用
192.168.0.101:8080
该服务提供者,service-provider
为服务名,echo
为路径。
参数配置
EDAS支持通过Postman发送SpringCloud和Dubbo服务请求。下面对两种类型服务分别进行参数配置说明。
Spring Cloud参数配置
对于Spring Cloud接口,当前支持设置如下参数。
参数 | 格式 | 是否支持 |
Params | 键值对 | |
Auth | 无 | |
Headers | 键值对 | |
Body | form-data | |
x-www-form-urlencoded | ||
raw | ||
binary | ||
GraphQL |
Dubbo参数配置
对于Dubbo请求,您可通过两种方式设置参数:form-data和raw(JSON)。
form-data
在EDAS控制台导出的Postman脚本已经预置接口的参数键,只需填写接口的参数值即可,如下图所示。
下面介绍几个不同接口参数的样例。
接口参数 | 样例 | 备注 |
|
| 接口使用两个参数,第一个参数为int型,第二个参数为字符串。 |
java.util.Map | {"color": "blue"} | Map类型参数使用JSON Object形式,即使用大括号表示:{"color": "blue"}。 |
java.util.List | ["Apple", "Banana", "Orange"] | 该样例中接口参数为List类型,且元素为字符串。List类型参数使用JSON数组表示,即 ["Apple", "Banana", "Orange"]。 |
com.test.User | {"id": 100, "name": "Sam"} | 该样例中接口参数为自定义的User类型,User中包含 |
AbstractUser | {"id": 100, "name": "Sam", "class": "com.test.User"} | 该样例中接口参数定义为抽象类AbstractUser。在实际参数中,需通过class属性指明当前参数的实际类型,即 "class": "com.test.User"。 |
raw(JSON)
需通过JSON数组方式提交参数,如下图所示。
下面介绍几个不同接口参数的JSON数组样例。
接口参数 | 样例 | 备注 |
<空> | [] | 接口无参数,直接传递空JSON数组。 |
<int, java.lang.String> | [100, "Jack"] | 接口使用两个参数,第一个参数为int型,第二个参数为字符串。 |
<java.util.Map> | [{"color": "blue"}] | Map类型参数使用JSON Object形式,即使用大括号表示:{"color": "blue"}。 |
<java.util.List> | [["Apple", "Banana", "Orange"]] | 该样例中接口参数为List类型,且元素为字符串。List类型参数使用JSON数组表示,即 ["Apple", "Banana", "Orange"]。 |
<com.test.User> | [{"id": 100, "name": "Sam"}] | 该样例中接口参数为自定义的User类型,User中包含 |
<AbstractUser> | [{"id": 100, "name": "Sam", "class": "com.test.User"}] | 该样例中接口参数定义为抽象类AbstractUser。在实际参数中,需通过class属性指明当前参数的实际类型,即 "class": "com.test.User"。 |
使用反馈
如您在使用中遇到任何问题,请加入钉群(钉群号:34556175)联系产品技术专家咨询处理。