本文介紹如何使用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)聯系產品技術專家咨詢處理。