后端開發(fā),我們對于Api接口調(diào)試測試大致有以下方法:單元測試、Swagger、Postman。
但是每種方式也都有其局限性,幾年前使用Visual Studio Code開發(fā)過一段時(shí)間,接觸了REST Client擴(kuò)展工具印象特別深刻,簡單、輕量、可編碼、與開發(fā)工具無縫銜接,整體效率相當(dāng)高。
在此之后我就一直在關(guān)注Visual Studio是否有類似的工具,直到最近發(fā)現(xiàn)Visual Studio 2022版本17.8開始支持類似REST Client擴(kuò)展工具相關(guān)功能了,雖然功能還不夠完善但是也基本夠用了。
今天和大家分享怎么通過.http文件便捷調(diào)試測試Api接口。
一、.http文件創(chuàng)建方式
.http文件有兩種創(chuàng)建方式:其一為通過添加文件,其二為通過終結(jié)點(diǎn)資源管理器生成。
1、添加文件方式
就像平時(shí)添加類文件一樣,通過選擇類庫右擊選擇添加,選擇新建項(xiàng),然后找到HTTP文件選項(xiàng),可以修改名稱最后點(diǎn)擊添加按鈕即可。
2、終結(jié)點(diǎn)資源管理器生成方式
首先選擇視圖菜單,找到其他窗口,然后找到終結(jié)點(diǎn)資源管理器并點(diǎn)擊,即可打開。
打開后效果如下:
然后我們可以任意選擇一個(gè)接口,右擊按鈕并點(diǎn)擊生成請求,即可自動創(chuàng)建.http文件并自動生成當(dāng)前接口的默認(rèn)請求示例,如下圖:
二、.http 文件語法
1、請求
HTTP請求格式為[HTTPMethod URL HTTPVersion]。
HTTPMethod: 表示HTTP方法包括增刪改查四大常見方法:GET、POST、PUT、DELETE,以及一些其他HTTP方法OPTIONS、HEAD、PATCH、TRACE、CONNECT;
URL: 表示發(fā)送請求的URL,即請求目標(biāo)URL,像正常方法URL一樣可以包含查詢字符串參數(shù);
HTTPVersion: 此項(xiàng)為可選項(xiàng),是指應(yīng)用的HTTP版本,即 HTTP/1.1、HTTP/2 或 HTTP/3。
當(dāng)然一個(gè).http文件中可以包含多個(gè)請求,可以通過###作為分隔符把多個(gè)請求分開
POST https://localhost:5137/orders
###
GET https://localhost:5137/orders?id=98006
###
DELETE https://localhost:5137/orders HTTP/3
###
2、請求頭、請求體
在實(shí)際請求中,我們不單單要指定請求方法,請求URL,還需要指定請求頭以及請求體。
常見的請求有請求內(nèi)容類型、響應(yīng)內(nèi)容類型、編碼方式、緩存控制、內(nèi)容類型、身份驗(yàn)證、跨域請求等等。
請求頭格式為[HeaderName: Value],一個(gè)請求頭類型占一行,可以有多個(gè)請求頭,并且每個(gè)請求頭之間不能有空白行,請求頭和請求行之間也不能有空白行。
GET https://localhost:5137/orders
Accept: application/json, text/html
###
GET https://localhost:5137/orders
Cache-Control: max-age=604800
Age: 100
###
請求體是指HTTP請求中攜帶的實(shí)際數(shù)據(jù),在請求行或者請求頭后空白行之后添加,示例如下:
GET https://localhost:5137/orders
Content-Type: application/json
{
"id": "897",
"date": "2024-12-24",
"price": 5,
"priceF": 2,
"name": "小紅",
"status": "Pending"
}
###
3、注釋、變量
注釋是以#或//開頭的行,可以加強(qiáng)代碼的可讀性。
變量是以@開頭的行,其語法格式為[@VariableName=Value],定義好變量后可以通過雙大括號{{ VariableName }}來使用變量,同時(shí)也可以使用已經(jīng)定義好的變量來定義新的變量。
@hostname=localhost
@port=5137
@host={{hostname}}:{{port}}
GET https://{{host}}/orders?id=98006
4、環(huán)境文件
在實(shí)際開發(fā)過程中,針對開發(fā)環(huán)境、測試環(huán)境,甚至生產(chǎn)環(huán)境,我們需要對同一個(gè)變量提供不同的值,比如不同環(huán)境首先域名就不同,其次針對不同環(huán)境的測試數(shù)據(jù)也不同。
這時(shí)候我們就可以使用環(huán)境文件,我們可以在.http文件所在的目錄中或者其父目錄中創(chuàng)建名為http-client.env.json的文件。如下代碼,我們創(chuàng)建了開發(fā)環(huán)境和生產(chǎn)環(huán)境兩個(gè)不同的域名。
{
"dev": {
"HostAddress": "http://localhost:5137"
},
"pro": {
"HostAddress": "http://localhost:8888"
}
}
此時(shí)我們可以在.http文件窗口右上角進(jìn)行切換不同環(huán)境。
下面我們選擇pro環(huán)境進(jìn)行測試一下,結(jié)果如下。
可以看到此時(shí)域名讀取了正式環(huán)境域名。
此時(shí)我們是可以把環(huán)境文件提交到代碼庫中和團(tuán)隊(duì)共享測試變量,那如果有些敏感的數(shù)據(jù)我們并不想提交到代碼庫和別人分享要怎么辦呢?
我們可以在環(huán)境文件同級目錄中創(chuàng)建http-client.env.json.user文件,它和環(huán)境文件編寫規(guī)則完全一樣,只是優(yōu)先級比環(huán)境文件優(yōu)先級更高。當(dāng)然我們需要在代碼管理的忽略文件.gitignore排查.user后綴的文件,防止其被意外提交至代碼塊。
三、身份驗(yàn)證
可以說我們的每個(gè)后端接口都有相關(guān)認(rèn)證授權(quán),可能使用Jwt,OAuth令牌,API密鑰,用戶密碼等方式,這就導(dǎo)致我們平時(shí)測試的時(shí)候,需要先登錄,然后拿到相關(guān)的認(rèn)證憑證,再去調(diào)相關(guān)的接口。
這意味著我們面臨一種情況,調(diào)用B接口需要依賴A接口的返回結(jié)果。首先答案很明確可以做到,要怎么做呢?
我們可以在A接口請求上面使用以下語法[# @name VariableName],來定義承載接口返回結(jié)果變量。
下面我們實(shí)現(xiàn)一個(gè)登錄接口,直接返回Jwt憑證即token字符串,然后使用這個(gè)token請求查詢訂單接口。
//登錄
# @name login
POST {{Web_HostAddress}}/login
Accept: application/json
###
//查詢訂單
@id=897
GET {{Web_HostAddress}}/orders?id={{id}}
Authorization: Bearer {{login.response.body.$.[0]}}
###
需要注意的是,因?yàn)槲覀兊卿浖纯墒侵苯臃祷氐淖址?,所以這里使用的是login.response.body.$.[0],如果我們返回的是對象并且token是賦值在token字段上的,則應(yīng)該使用login.response.body.$.token。
并且當(dāng)我們點(diǎn)擊查詢訂單接口請求上面的調(diào)試時(shí),即使我們程序沒有運(yùn)行起來,它也會自動運(yùn)行,并且也會自動去執(zhí)行登錄接口,拿到它所需的token,然后運(yùn)行自身。
而發(fā)送請求按鈕就必須要求程序運(yùn)行起來以后才能生效。
到這里.http文件使用就介紹完了,可以說基本夠用了,當(dāng)然還有很多地方需要完善的,比如說上傳文件,終結(jié)點(diǎn)資源管理器不能直接自動生成請求體結(jié)構(gòu)等等,相信要不了多久這些功能就會完善起來的,安心等待即可。
注:本文轉(zhuǎn)載自“IT規(guī)劃師”,如有侵權(quán),請聯(lián)系刪除!