看了網上好多的 idea rest client 講解,大多都只是講了它如何如何好,都只是簡單的測了一個 json 的接口而已,我的實踐了一把,裏面仍是有挺多坑的,但不得不說,那個腳本化處理請求的功能確實挺棒。javascript
腳本化配置確實很方便,linux 使用文件來配置環境變量代替了windows 的可視化配置,sublime 使用文件來配置它的全部配置項取代傳統的可視化配置,這種文件化的方式能夠作到可遷移,多端即時同步和多人共享,有過經歷的人天然懂我在說什麼。html
關於腳本化 mock 的實踐,免複製 token 實踐,文件傳輸實踐java
請求的語法基本上和 http 協議內容是一致的,結構以下linux
### 使用三個 # 來分隔多個請求 GET/POST 請求地址(可拼接查詢參數) 請求頭鍵值對 請求體 > {% %} # 響應處理 > 打頭和 shell 很像,而後用 {% %} 括起來的腳本內容 ,在腳本中可使用 javascript 原生語法,這就很強大了 # 腳本中有幾個內置對象 client 表示當前客戶端,response 表示響應結果
對於這個使用文檔,我在官網沒有找到對應的文檔位置,但在 idea 自己提供了一些不錯的使用示例,它的位置在 Tools/HTTP Client/Open HTTP Requests Collection
git
每發送一個請求後,你能夠在歷史記錄中找到它,idea 會爲你保存最近 50 條請求,保存的是編譯後的請求,當你發送的請求的響應結果和實際不符時,你能夠在這裏找到問題的緣由,它在項目的 .idea/httpRequests
文件夾中。redis
配置環境信息shell
這也是它比較強大的一方面,使用一個 json 來配置全部環境,只要在請求腳本目錄下就能夠讀到,遵循約定大於配置的原則,文件名 http-client.env.json
表示普通變量可放的地方 http-client.private.env.json
表示密碼等私有變量配置的地方,配置大體以下。在運行請求腳本的時候,idea 會提示你要選哪一個環境數據庫
{ "local":{ "baseUrl": "http://localhost:8083/", "checkCode": "http://localhost:8081/sanritools/company/token?env=dev", }, "dev": { "baseUrl": "http://devhost:port/", "checkCode": "http://localhost:8081/sanritools/company/token?env=dev", }, "sit": { "baseUrl": "http://sithost:port/", "checkCode": "http://localhost:8081/sanritools/company/token?env=sit", } }
登陸 token 示例json
網上的示例基本上都是在說,用一個接口獲取到 token ,而後保存到全局變量中,而後後面的接口就能夠直接使用了,代碼以下,可是本人試了無數次都沒成功,再者,大家項目都沒驗證碼的嗎。windows
### 獲取 token 值 GET {{checkCode}} Content-Type: application/json > {% client.global.set("token", response.body.token); %} ### 獲取素材列表 POST {{baseUrl}}/media/list Content-Type: application/json Authorization: {{token}} { "pageNo": 1, "pageSize": 10 }
上面這個是有問題的,返回值 response.body 其它是個 json 字符串並不是 javascript 對象,須要解析一下,前面也說了,這裏可使用原生 javascript 腳本,因此 JSON.parse(response.body).token
才能正確獲取到 token ,
第二個問題,咱們如今這個 token 是存在 redis 的,因此我能夠繞過驗證碼,另寫一個接口去 redis 直接獲取 token ,腳本最終以下
### 獲取 token 值 GET {{checkCode}} Content-Type: application/json > {% client.global.set("token", JSON.parse(response.body).token); %} ### 獲取素材列表 POST {{baseUrl}}/media/list Content-Type: application/json Authorization: {{token}} { "pageNo": 1, "pageSize": 10 }
文件傳輸實踐
前面說了,輸入輸出和 shell 中很像,因此這裏輸入一個文件使用 < 文件地址
,隨便找個 multipart/form-data
的數據格式查看一下,就知道文件怎麼傳了,其實在示例中也有,以下面腳本所示,它使用一個 boundary 的 key 綁定當前所要提交多個 part 的數據,每一個 part 能夠是不一樣的數據格式 ;
### 測試發送文件信息(文件元數據信息查詢) POST {{baseUrl}}/media/upload/fileMetaData Content-Type: multipart/form-data; boundary=WebAppBoundary Authorization: {{token}} --WebAppBoundary Content-Disposition: form-data; name="fileSize" Content-Type: application/json 1024 --WebAppBoundary Content-Disposition: form-data; name="md5" Content-Type: application/json sdafasdfasfd --WebAppBoundary Content-Disposition: form-data; name="partFile"; filename="zhongwenbuxin.avi" Content-Type: application/octet-stream < C:\Users\091795960\Videos/V0106_1024KB.avi --WebAppBoundary--
對於返回信息亂碼我沒有碰到,也沒有設置網上說的消息頭和啓動配置,返回消息是正常編碼的;我只碰到了上傳上去的文件名是亂碼的,怎麼設置都不生效,沒找到解決辦法,但自測的話,取個英文名也不要緊,有哪位大神解決了能夠告訴我一下。
關於其它斷言的使用,和日誌的使用能夠找其它的博客,這裏列一篇以供參考
http://www.javashuo.com/article/p-vornanue-bm.html
創做不易,但願能夠支持下個人開源軟件,及個人小工具,歡迎來 gitee 點星,fork ,提 bug 。
Excel 通用導入導出,支持 Excel 公式
博客地址:https://blog.csdn.net/sanri1993/article/details/100601578
gitee:https://gitee.com/sanri/sanri-excel-poi
使用模板代碼 ,從數據庫生成代碼 ,及一些項目中常常能夠用到的小工具
博客地址:https://blog.csdn.net/sanri1993/article/details/98664034
gitee:https://gitee.com/sanri/sanri-tools-maven