工具現(xiàn)狀
對于API調(diào)試工具來說近幾年國內(nèi)有不少整合的比較好的工具沟优,比如Apifox、Apipost等睬辐。這些工具主打主打功能整合挠阁,多種功能集成一步到位,但目前對于協(xié)議的多樣性則支持得較慢溯饵,截止本文寫作時間點侵俗,其更多類型的支持暫時放到了后續(xù)規(guī)劃中。
Postman
Postman作為API調(diào)試的老大哥瓣喊,整體的功能時比較全的坡慌,WebSocket(也是BETA)之前就已經(jīng)支持了。而在最近的幾個版本中Postman也提供了gRPC功能的支持藻三。截止本文時間點洪橘,Postman最新版本為v9.14.0,所以本文也是基于該版本進行學習和功能使用介紹棵帽。
Release Notes
Postman在最近幾個版本中對grpc的功能進行了beta測試熄求。
Postman v9.7.1
在v9.7.1中Postman首次支持了gRPC功能的使用,在當時版本中已經(jīng)基本支持了gRPC的單獨功能使用逗概。主要支持了單次弟晚、單雙向流式的gRPC調(diào)用。同時也能使用Postman中的變量逾苫。
在這個版本中需要我們手動在Postman中定義Proto文件卿城。
Postman v9.9.0
在v9.9.0中支持了直接加載服務器中暴露出來的gRPC方法來直接使用。
Postman v9.14.0
在v9.14.0中可以直接使用加載本地中的proto文件作為定義文件來使用铅搓。
使用流程
在Postman中的接口定義流程和v9.7.1中基本一致瑟押,通過新建Request以及選擇gRPC來建立一個gRPC。其中主要定義功能我分為了6塊星掰,具體分割如下圖:
1. service URL
需要定義service URL地址多望,ip或域名嫩舟,主要注意是要指定gRPC的接口。
2. 服務方法組
比較重要的是服務方法的選擇怀偷。目前有四種添加途徑:
- 通過服務器掃描映射家厌。
- 加載本地文件
- 通過URL加載定義文件
- 直接創(chuàng)建一個新的API定義
但需要注意,通過服務器映射的這個方法我自己實際測試并不能完全地掃描到所有的服務器接口椎工,可能是有用法上的問題饭于。
而導入本地文件、使用導入url以及直接定義新的鏈接本質(zhì)上都是在Postman的APIs管理中添加了一個Protobuf定義文件晋渺,所以在v9.14.0版本的更新中所添加的“本地文件導入功能”镰绎,僅僅是幫助用戶省去了在APIs中新建定義接口的功能脓斩,但是直接將用戶的功能使用路線全部聚焦到接口調(diào)試界面中木西,我認為很大程度的提高了用戶使用體驗。
但是不一樣的是随静,在使用本地導入的時候八千,如果使用"import"關鍵字引入了其他的proto定義文件,postman暫時無法描述這種定義關系燎猛,在request中可以直接使用恋捆,但是無法保存,也無法記錄到APIs中重绷。所以盡量按照規(guī)范將接口描述在一個proto文件中沸停。
3. 調(diào)用方法
選擇需要調(diào)用的具體方法,其中左側(cè)圖標會標記出方法的調(diào)用類型昭卓。
4. 消息定義
消息定義區(qū)域中有有三個tab愤钾,message中使用JSON方式來定義消息結(jié)構(gòu)體,在使用JSON定義結(jié)構(gòu)體的時候字符串與數(shù)值類型會自動在發(fā)送的時候根據(jù)proto中定義的類型候醒。其余兩個的使用方式與Http API基本一致能颁。
5. 便捷工具
目前提供了“美化”與“請求樣例生成”功能,值得注意的是倒淫,在早期版本中樣例生成是用""的圖標伙菊,但是在目前版本中直接使用文字進行提示了,我猜測是因為燈泡的圖標在大眾的使用習慣中主要是“幫助”敌土、“提示”的意思镜硕,所有導致該功能的使用率較低,所以直接換成了文字進行提示返干。
6. 響應體
該部分以JSON格式展示返回信息兴枯,以及其他的響應狀態(tài)與訪問時間等。
最后
因為實際的使用需求所以對該Postman工具中的gRPC部分進行了使用上的學習犬金。根據(jù)Release Notes以及git上的Issues觀察了軟件的演進這件事還挺有意思的念恍。