如何使用Postman调试微服务接口

本文介绍如何使用Postman调试云上Spring Cloud或Dubbo服务接口功能。

背景信息

云端服务接口一般只能在集群内部访问,不便于服务接口的测试验证。EDAS提供Postman访问能力,在运行Postman脚本时,通过拉起云端测试引擎发起接口调用,可以提高接口的测试验证效率。整体链路如下图所示。

postman调用流程

权限说明

为防止对云上环境内的接口误调用,在运行Postman脚本前您需具备以下权限。

  • 目标应用的读权限:能够选择该应用发起接口访问。

  • 接口访问权限:能够对接口进行成功调用。

  1. 登录EDAS控制台
  2. 在左侧导航栏,选择系统管理 > 权限助手

  3. 权限助手页面,单击创建权限策略

  4. 创建权限策略配置向导页面的创建自定义权限策略页签,设置权限策略的策略名称备注

  5. 创建自定义权限策略页签,单击新增权限语句,在加授权语句面板,设置对应应用的查看权限和接口访问权限,然后单击确认

    1. 权限效力下方,选择允许

    2. 操作与资源授权区域的左侧权限列表,选择应用 > 查看应用应用 > 接口访问,在右侧资源列表中根据您的需求设置对应的地域微服务空间应用

      资源授权
  6. 创建权限策略配置向导页面,单击下一步

  7. 策略预览页签预览权限,根据页面提示在RAM控制台创建自定义权限策略,并授权给对应的RAM用户,然后单击完成。具体操作,请参见步骤三:创建RAM用户并添加授权

    控制台面板提示新增策略授权成功,单击返回列表查看,返回权限助手页面,查看新建的权限策略模板。

操作步骤

步骤一:导出Postman脚本

  1. 登录EDAS控制台
  2. 在左侧导航栏,选择流量管理 > 微服务治理 > Spring Cloud (或流量管理 > 微服务治理 > Dubbo)。

  3. 服务查询页面,单击批量导出Postman,下载ZIP包到本地并解压。

步骤二:将脚本导入Postman程序

  1. 下载Postman程序,安装完成后,打开Postman。

    说明

    Postman版本需大于v8.3.0

  2. 单击Import,选择导出Postman脚本解压后的文件,再次单击Import即可完成导入。

    导入后,如下图所示:

    postman导入目录
    • ①:表示微服务空间名称/应用名称。

    • ②:表示服务名称。

    • ③:表示服务下的方法(或接口)。

步骤三:配置账号AccessKeyID及AccessKeySecret

  1. 单击导入后的微服务空间名称/应用名称,在Variables页签,填写您账号的AccessKeyIDAccessKeySecret,可设置在INITIAL VALUECURRENT VALUE列 。

  2. 配置完成后,单击保存图标保存。

    设置acesskey

步骤四:发送Postman请求

  1. 单击服务下的方法(或接口),然后单击Send发送请求。您可自定义配置方法(或接口)的参数。具体操作,请参见参数配置

    说明

    首次发送请求时,需初始化云端测试引擎,大概持续20~30秒左右。初始化引擎之后,在1个小时内无需重新初始化。

  2. 单击Console查看初始化过程。

    发送请求
  3. 调用成功后,切换至Visualize页面查看请求结果。

    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为方法名,参数为空。

SpringCloud类型服务..png

Spring Cloud类型服务

  • 地址格式:http://服务名称@IP:端口/路径。

  • 示例:http://service-provider@192.168.0.101:8080/echo 。

    该示例中,指定调用192.168.0.101:8080该服务提供者,service-provider为服务名,echo为路径。

Dubbo类型服务..png

参数配置

EDAS支持通过Postman发送SpringCloud和Dubbo服务请求。下面对两种类型服务分别进行参数配置说明。

Spring Cloud参数配置

对于Spring Cloud接口,当前支持设置如下参数。

参数

格式

是否支持

Params

键值对

image

Auth

image

Headers

键值对

image

Body

form-data

image

x-www-form-urlencoded

image

raw

image

binary

image

GraphQL

image

Dubbo参数配置

对于Dubbo请求,您可通过两种方式设置参数:form-dataraw(JSON)

form-data

在EDAS控制台导出的Postman脚本已经预置接口的参数键,只需填写接口的参数值即可,如下图所示。

form-data

下面介绍几个不同接口参数的样例。

接口参数

样例

备注

  • 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中包含idname属性。

AbstractUser

{"id": 100, "name": "Sam", "class": "com.test.User"}

该样例中接口参数定义为抽象类AbstractUser。在实际参数中,需通过class属性指明当前参数的实际类型,即 "class": "com.test.User"。

raw(JSON)

需通过JSON数组方式提交参数,如下图所示。

raw(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中包含idname属性。

<AbstractUser>

[{"id": 100, "name": "Sam", "class": "com.test.User"}]

该样例中接口参数定义为抽象类AbstractUser。在实际参数中,需通过class属性指明当前参数的实际类型,即 "class": "com.test.User"。

使用反馈

如您在使用中遇到任何问题,请加入钉群(钉群号:34556175)联系产品技术专家咨询处理。