今天給你們介紹一個後端開發輔助的好工具 —— REST Client,插件如其名這就是一個 REST 的客戶端插件,把咱們的 VSCode 轉化爲一個 REST 接口測試的利器python
咱們通常都會用 PostMan 來完成接口測試的工做,由於用起來十分簡單快捷,可是一直以來我也在尋找更好的方案,一個不用切換窗口多開一個 app 的方案 —— 終於在使用 VSCode 一段時版本間,我找到了 REST Client 插件,初看 REST Client 插件的時候,會以爲他十分的簡陋,可是在使用一段時間後會發如今 REST Client 插件中已經有完成接口測試所需的全部東西git
優點github
劣勢後端
不少時候咱們只是須要寫完代碼後手邊有一個小工具能夠輕鬆愉快的看一眼接口是否正常,那麼 REST Client 就是咱們的首選了api
插件的安裝很是簡單,搜索 restclient 便可安裝服務器
安裝完成後,能夠在命令菜單中找到 REST Client 相關的功能微信
咱們先從發送最簡單的請求開始markdown
首先須要新建一個 http 文件,建立文件時後綴爲 http 便可,例如 test.httpapp
以後輸入下面的內容:dom
GET http://localhost:8000/api/v1/public/echo?msg=1345asdf HTTP/1.1
複製代碼
echo 是一個測試服務,他會返回你傳入的 msg 的內容,輸入完上面的
這時候請求上面會顯示一個 「Send Request」 按鈕,點擊便可發送請求,請求完成後,插件會分割當前窗口將新的結果打開在右側的窗口中,下圖中顯示了請求的全部相關信息
HTTP 是一個很是簡單的語言,入門僅需幾分鐘
最基本的 HTTP 語言語法入門能夠參看上面的內容,配合 VSCode 的自動提示功能,用起來簡直不要太快
也不用擔憂是否記得 header 裏面那些選項,想不起來的時候 Ctrl + 空格
調出自動提示便可
要注意的地方
#
開頭的行,建議空行,這樣多個請求看起來會很是好看form
類型的參數拆分爲多行,那麼第二個參數開始必須以 &
開始(如圖)?
或者 &
開始通常來講,咱們使用 multipart/form-data
請求方式來完成
如圖配置,REST Client 就會將文件內容填充到相應的區域完成發送
對於返回圖片的接口在 VSCode 中是能夠直接預覽的,若是是 Excel 之類的二進制文件,那麼這裏可能會顯示亂碼(二進制文件)
選中相應結果頁,右上角提供了保存結果的按鈕
使用 Ctrl + Alt + H
(macOS 使用 Cmd + option + H
)查看請求歷史
變量的好處,在開發過程當中咱們都知道,在 HTTP 語言中一樣可使用變量來幫助咱們組織請求代碼
咱們能夠在 http 文件中直接定義變量,使用 @
符號開頭,以 {{variable name}}
的格式來使用
@host = http://localhost:8000
@token = adsfasdfasdfadsfasdfasdfas
### test
GET {{host}}/api/v1/public/echo HTTP/1.1
?msg=1345asdf
&bundle_id=demo
&test=1
&token={{token}}
### test request
POST {{host}}/api/v1/public/echo HTTP/1.1
Content-Type: application/x-www-form-urlencoded
User-Agent: iPhone
test=1
&bundle_id=demo
&msg=123123
&token={{token}}
複製代碼
這樣在測試驗證不一樣環境接口正確性的場合,咱們能夠很方便的在不一樣服務器之間切換,或是全部接口都使用同一個參數的時候很是方便例如上面的 token 應該是大部分接口都會使用到的
除了使用自定義變量之外還能夠對當前的項目或是建立編輯器全局的環境變量
"rest-client.environmentVariables": {
"$shared": {
"version": "v1"
},
"local": {
"version": "v2",
"host": "http://localhost:8000",
"token": "tokentokentokentoken1"
},
"prod": {
"host": "http://api.xxxxxx.com",
"token": "tokentokentoken2"
}
}
複製代碼
上面 $shared
中的變量表示在全部環境設置中均可以使用的
設置後可經過 Ctrl + Alt + E
(Cmd + option + E
)切換環境
REST Client 提供了一些自帶的系統變量,方便咱們直接使用(這裏因爲我沒有使用過 Azure 因此跳過了 Azure 相關的變量,你們能夠參考文檔使用)
{{$guid}}
: 生成一個 UUID
{{$randomInt min max}}
: 生成隨機整數
{{$timestamp [offset option]}}
: 生成時間戳,可使用相似 {{$timestamp -3 d}}
生成3天前的時間戳,或是使用 {{$timestamp 2 h}}
這樣的形式生成2小時後的時間戳
{{$datetime rfc1123|iso8601 [offset option]}}
: 生成日期字符串
VSCode 對咱們使用 HTTP 語言提供了包括自動提示,Outline 代碼導航功能,方便咱們編寫接口測試代碼
Basic Auth 可使用已經 Base64 後的 username:password
,也能夠直接填入 username
和 password
,也就是下面兩種形式都是能夠的
使用 Base64 的結果
POST {{host}}/api/v1/public/echo HTTP/1.1
Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=
複製代碼
使用 username
和 password
POST {{host}}/api/v1/public/echo HTTP/1.1
Authorization: Basic username password
複製代碼
Digest Auth 直接填入 username
和 password
便可
POST {{host}}/api/v1/public/echo HTTP/1.1
Authorization: Digest username password
複製代碼
ssl 證書在設置文件中對特定域名指定證書路徑後,就能夠自動生效了
"rest-client.certificates": {
"localhost:8081": {
"cert": "/Users/demo/Certificates/client.crt",
"key": "/Users/demo/Keys/client.key"
},
"example.com": {
"cert": "/Users/demo/Certificates/client.crt",
"key": "/Users/demo/Keys/client.key"
}
}
複製代碼
每一個 host 咱們能夠設置下面的內容:
曾經使用 Postman 的時候,Postman 的代碼生成功能爲我提供了很是多的方便,REST Client 中提供了一樣的功能
選中一個請求後,點擊右鍵選擇 Copy Request As cURL
能夠把當前的請求複製成 curl 的命令,也可使用 Ctrl + Alt + C
(macOS 下Cmd + Option + C
)呼出代碼生成菜單,選擇須要生成的語言
選擇語言後選擇具體代碼調用的方式,好比 python 可使用 http.client
庫或者 Requests
庫來發送請求
以前咱們發送的全部請求都是匿名請求,匿名請求和命名請求的區別就是在一個 http 文件內,能夠引用命名請求的請求信息和響應信息,在請求之間有依賴關係時這個功能很是有用,例如每次登陸成功後其餘請求都須要更新登陸返回的 token,命名請求能夠用過 JSONPath 或者 XPath 獲取響應數據
在響應中也會顯示使用到當前命名請求的變量值的更新
在 REST Client 設置中的 「Preview Option」 能夠設置請求響應顯示什麼內容,總共有四種,full
,body
,header
,exchang
咱們分別來看下四種結果顯示什麼內容
rest-client.timeoutinmilliseconds
: 設置請求超時,單位毫秒rest-client.showResponseInDifferentTab
: 每一個響應請求建立一個新的 tab,爲 false 時,每次請求會覆蓋上一次的請求結果,設置爲 true 時每次請求都會打開一個新的 tab,方便對比屢次請求結果rest-client.previewColumn
: 請求結果顯示,current
表示顯示在當前的編輯器分組 beside
表示顯示在側面編輯器分組(這個側面根據編輯器的 workbench.editor.openSideBySideDirection
選項會顯示在右面或是下面http.proxy
和 http.proxyStrictSSL
其實 Postman 和 Paw 都提供更爲強力的輔助工具,這裏使用 REST Client 單純以爲 Postman 和 Paw 大部分功能我其實都用不到,由於僅僅驗證接口是否正常,業務是否能跑通,因此一直在尋找一個簡單的工具,REST Client 恰好知足了我全部的需求
這裏附上 REST Client 項目地址,裏面也有對應的文檔 github.com/Huachao/vsc…
最後歡迎你們訂閱個人微信公衆號 Little Code