大家好,我是一航!
如果你是一名Java后端開發工程師,像Swagger
、Postman
、RAP
這些工具,應該再熟悉不過了吧!為我們的接口開發工作帶來了很多的便捷,不過因為這些都是獨立的框架,之間並不存在互通性,因此在多個框架間協調的時候,不可避免的會帶來一些重復性的工作;
今天來介紹一款強大的國產工具:ApiPost,將Swagger 、 Postman 、 RAP 、 JMeter 的功能完美的做了整合,一款工具,全部搞定。
什么是ApiPost
ApiPost = 接口調試
+接口文檔快速生成
+接口文檔規范化管理
+Mock API
+接口流程測試
。
常見的接口管理方案
-
API文檔
Swagger
-
調試 API
Postman
-
Mock API 數據
RAP
-
API 自動化測試
JMeter
ApiPost產生的初衷是為了提高研發團隊各個角色的效率!產品的使用受眾為由前端開發、后端開發和測試人員以及技術經理組成的整個研發技術團隊。
APIPOST通過協作功能將研發團隊的每個角色整合打通。
安裝
ApiPost目前提供Window64位,Window32位、Mac、Linux版本的安裝包下載。
可通過以下官方地址進行下載
使用
發送HTTP請求
API界面功能布局
API請求參數
Header 參數
你可以設置或者導入 Header 參數,cookie也在Header進行設置
Query 參數
Query 支持構造URL參數,同時支持 RESTful 的 PATH 參數(如:id)
Body 參數
Body 提供三種類型 form-data / x-www-form-urlencoded / raw ,每種類型提供三種不同的UI界面
-
當你需要提交表單時,切換到 x-www-form-urlencoded
-
當你需要提交有文件的表單時,切換到 form-data
-
當您需要發送JSON對象或者其他對象時,切換到對應的raw類型即可
API 請求響應
點擊發送按鈕后,如果有數據返回,則會顯示返回數據,響應時間,響應碼,Cookie等。
注意:返回數據默認是Pretty模式,便於查看 JSON XML 格式。您可以通過切換 原生 或 預覽 模式 查看其它類型的類型。
返回Headers
全局參數和目錄參數
實際的企業級應用開發常見下,通常會約定一些通用的數據,比如token、時間、終端這些,如果每個接口都去獨立去維護,勢必會對開發、調試帶來一些不必要的工作量;此時,我們就需要有一個能設置全局參數的地方來統一管理這些公共參數
全局參數
我們打開全局參數管理器,在全局header除填上token參數:
每次在接口請求的時候,就會自動帶上這些公共配置的參數。
目錄參數
目錄參數和全局參數的作用一樣,屬於一個更細化的功能,可以通過目錄,來區分全局參數的作用域;可以為不同的目錄設置不用的公共參數:
參數的優先級
當全局參數、目錄參數、接口中都使用了同一個參數時,最終會按照以下優先級讀取參數值:
單個接口 > 目錄參數 > 全局參數
響應和斷言
響應
當Http請求發送之后,得到的服務端返回的結果表示一個響應;其中會得到狀態碼、數據、Headers、Cookie等。
- Headers
斷言
服務器返回了響應數據,並不代表着接口就一定正常了,很可能以為bug或者數據異常導致得到的結果並沒有達到實際的預期;因此,我們就可以使用斷言功能,來判斷最終響應的結果是不是我們想要的;
常用斷言表達式
-
檢查response body中是否包含某個string
apt.assert('response.raw.responseText=="test"'); // 檢查響應文本是否等於test字符串 apt.assert('response.raw.responseText.indexOf("test") > -1'); // 檢查響應文本是否含有test字符串
-
檢測返回JSON中的某個值是否等於預期的值
apt.assert('response.json.hasOwnProperty("errcode")'); // 檢測返回json對象的是否含有errcode字段 apt.assert('response.json.errcode=="success"'); // 檢測返回json對象的errcode字段是否等於success字符串 apt.assert('response.json.errcode.indexOf("success") > -1'); // 檢測返回json對象的errcode字段是否含有success字符串 apt.assert('response.json.errcode!="success"'); // 檢測返回json對象的errcode字段是否不等於success字符串 apt.assert('response.json.errcode>=1'); // 檢測返回json對象的errcode字段是否大於1 apt.assert('response.json.errcode==null'); // 檢測返回json對象的errcode字段是否是null
-
測試response Headers中的某個元素是否存在(如:Content-Type)
apt.assert('response.headers.hasOwnProperty("content-type")');
-
驗證Status code(響應碼)的值是不是等於200
apt.assert('response.raw.status==200');
-
驗證Response time(請求耗時)是否大於某個值
apt.assert('response.raw.responseTime>=100');
-
驗證返回類型是不是json
apt.assert('response.raw.type=="json"');
一鍵文檔生成
當通過上述的功能驗證完接口之后,即可通過分享文檔
或者分享項目
的方式,一鍵生成接口文檔;
點擊分享之后,即可拿到一個接口文檔訪問地址,詳情如下:
為了讓文檔的請求和響應參數更加的清晰、明確;我們可以對header、query以及form-data和urlencode的body參數進行詳細的描述
-
請求參數描述
-
響應參數描述
Mock
大部分企業的產品都采用的敏捷開發,為了能保證多端同步開展,當方案一旦確定,就需要通過Mock生成API的數據規則;這樣多端就可以根據文檔規則進行開發,不會因為團隊見彼此的進度而互相干擾、互相影響。
編寫Mock 規則
在APIPOST中,Mock 規則模板支持類型豐富(5.4版本起)。
基本數據(固定json結構)
{
"code": "0",
"data": {
"name": "張三豐",
"age": 100
},
"desc": "成功"
}
基本數據(Mock隨機json結構)
{
"code": "0",
"data": {
"list|20": [{
"name": "@name",
"age": "@integer(2)"
}],
"url": "https://echo.apipost.cn"
},
"desc": "成功"
}
RESTFUL邏輯數據
某些場景中,我們可能需要根據接口的入參規則,加入適當的邏輯處理后再返回數據。一個簡單的場景就是登錄場景,需要根據用戶名密碼,判斷是否登錄成功。再或者,我們需要根據產品ID動態返回產品信息,等等。
現在,ApiPost 的Mock 服務提供了這種場景的解決方案。
以下示例中,我們用到了 _req.body對象,其含義是:
當 post 請求以 x-www-form-urlencoded 或者application/json 方式提交時,我們可以拿到請求的參數對象。
{ "code": "0000", "data": { "verifySuccess": function() { let body = _req.body; return body.username === 'admin' && body.password === '123456'; }, "userInfo": function() { let body = _req.body; if (body.username === 'admin' && body.password === '123456') { return Mock.mock({ username: "admin", email: "@email", address: "@address" }); } else { return null; } }, }, "desc": "成功"}
獲取Mock地址
-
切換到Mock環境進行測試
-
復制Mock地址
自動化測試
流程測試是針對一個接口集合的測試,選擇相應的環境,可以作為一系列請求一起運行。
當您想要自動化API測試時,流程測試非常有用。
創建一個測試流程
步驟:
- 新建接口,並添加斷言
- 打開流程測試,新建一個流程
- 向流程添加測試接口
- 選擇環境,點擊開始測試
- 查看返回的測試接口
總結
至此,ApiPost常用的核心功能已經介紹完了,但ApiPost的強大並不限於此,在團隊管理
、協同管理
、項目管理
的多個方面都表現的很優秀,如果你還沒有用過,建議嘗試一下,相信用過之后,一定會愛上!
更多詳細的功能,可查看官方文檔: