詳解IntelliJ IDEA 自帶的 HTTP Client 接口調(diào)用插件吊打 Postman
Java公眾號【Java技術(shù)迷】一個(gè)在互聯(lián)網(wǎng)領(lǐng)先地位,微信搜索【Java技術(shù)迷】第一時(shí)間閱讀最新文章,通過下面下載鏈接,即可獲得我精心整理的技術(shù)資料,電子書籍,一線大廠面試資料和優(yōu)秀簡歷模板。
http://xiazai.jb51.net/202105/yuanma/javadzsh_jb51.rar
1 前言當(dāng)我們在開發(fā)調(diào)試 Web 服務(wù)的時(shí)候,需要對接口進(jìn)行調(diào)用測試;或者對接第三方系統(tǒng)時(shí),需要調(diào)用遠(yuǎn)程第三方的接口進(jìn)行聯(lián)調(diào)。這時(shí),相信大家首選的工具一般會是 Postman ,一款當(dāng)今比較流行而且功能齊全的接口調(diào)用調(diào)試工具。如下所示:
不過我們一般使用 IntelliJ IDEA 代碼編輯器來開發(fā)和調(diào)試 Web 服務(wù),如果使用 Postman 工具來測試接口,不僅要在電腦上安裝 Postman ,還需要在不同工具之間切換,比較麻煩。幸運(yùn)地的是 IDEA 自帶了一款簡潔輕量級的接口調(diào)用插件,HTTP Client。
HTTP Client 是 IDEA 自帶的一款簡潔輕量級的接口調(diào)用插件,通過它,我們能在 IDEA 上開發(fā),調(diào)試,測試 RESTful Web 服務(wù)。
注意:確保 HTTP Client 插件是安裝啟動的,默認(rèn)是已安裝啟動的。若沒有安裝,在 File - Settings - Plugins 路徑下進(jìn)行安裝,如下:
可以創(chuàng)建2種文件類型的 HTTP Client 文件,一種是臨時(shí)文件(scratch files,不跟項(xiàng)目工程掛鉤),一種是非臨時(shí)文件(physical files,跟項(xiàng)目工程掛鉤)。
如果你想創(chuàng)建的 HTTP Client 文件是為了臨時(shí)調(diào)用接口測試用的,不需要保留記錄供以后使用,則可以使用臨時(shí)文件;如果想存檔記錄請求參數(shù),請求結(jié)果等,后續(xù)再繼續(xù)使用,或者隨項(xiàng)目提交到遠(yuǎn)程git倉庫,則建議使用非臨時(shí)文件。
創(chuàng)建 HTTP Client 臨時(shí)文件
打開后,顯示界面和Postman差不多,不過這種風(fēng)格的界面被棄用了,官方不推薦我們使用,在最新版本的 IDEA 中已經(jīng)沒有這個(gè)界面了。
官方推薦我們使用編碼式的風(fēng)格界面,點(diǎn)擊上個(gè)界面頂部的 Convert request to the new format ,即可打開新的 HTTP Client 界面。
創(chuàng)建 HTTP Client 非臨時(shí)文件
可以在項(xiàng)目根目錄下創(chuàng)建一個(gè)存儲請求文件的文件夾,然后在里面創(chuàng)建 HTTP Client 請求文件,如下:
HTTP 請求存儲在以.http或.rest為后綴的文件中,并且?guī)в?API 小圖標(biāo)。
請求文件可以包含多個(gè)請求,多個(gè)請求中間用3個(gè)井號 ### 隔開;如果是臨時(shí)文件,每次執(zhí)行請求后,會在請求下方生成對應(yīng)請求結(jié)果的文件鏈接,按住 Ctrl + 鼠標(biāo)左鍵可以打開。
所有的請求結(jié)果,請求歷史記錄,cookies等信息會存放在 .idea 文件夾下,如下:
使用右上角的快捷按鈕創(chuàng)建請求,可以選擇不同方式的請求,如下:
使用快捷鍵進(jìn)行創(chuàng)建請求,例如輸入 gtr 可以快速創(chuàng)建一個(gè)簡單的 GET 請求,如下:
使用 Ctrl + J 快捷鍵可以查看創(chuàng)建 HTTP 請求的所有快捷鍵,如下:
通過 cURL 創(chuàng)建請求,點(diǎn)擊右上角的 Convert form cURL 按鈕,然后輸入 cURL 地址即可自動轉(zhuǎn)換,如下:
GET
### GET request with a headerGET https://httpbin.org/ipAccept: application/json### GET request with parameterGET https://httpbin.org/get?show_env=1Accept: application/json### GET request with environment variablesGET {{host}}/get?show_env={{show_env}}Accept: application/json### GET request with disabled redirects# @no-redirectGET http://httpbin.org/status/301### GET request with dynamic variablesGET http://httpbin.org/anything?id={{$uuid}}&ts={{$timestamp}}###
POST
### Send POST request with json bodyPOST https://httpbin.org/postContent-Type: application/json{ 'id': 999, 'value': 'content'}### Send POST request with body as parametersPOST https://httpbin.org/postContent-Type: application/x-www-form-urlencodedid=999&value=content### Send a form with the text and file fieldsPOST https://httpbin.org/postContent-Type: multipart/form-data; boundary=WebAppBoundary--WebAppBoundaryContent-Disposition: form-data; name='element-name'Content-Type: text/plainName--WebAppBoundaryContent-Disposition: form-data; name='data'; filename='data.json'Content-Type: application/json< ./request-form-data.json--WebAppBoundary--### Send request with dynamic variables in request’s bodyPOST https://httpbin.org/postContent-Type: application/json{ 'id': {{$uuid}}, 'price': {{$randomInt}}, 'ts': {{$timestamp}}, 'value': 'content'}###
PUT
PUT http://localhost:8080/person/putContent-Type: application/json{'name': '陳皮','age': 17}
PATCH
###PATCH http://localhost:8080/person/putContent-Type: application/json{'name': '陳皮','age': 17}
鑒權(quán)方式
### Basic authorization.GET https://httpbin.org/basic-auth/user/passwdAuthorization: Basic user passwd### Basic authorization with variables.GET https://httpbin.org/basic-auth/user/passwdAuthorization: Basic {{username}} {{password}}### Digest authorization.GET https://httpbin.org/digest-auth/realm/user/passwdAuthorization: Digest user passwd### Digest authorization with variables.GET https://httpbin.org/digest-auth/realm/user/passwdAuthorization: Digest {{username}} {{password}}### Authorization by token, part 1. Retrieve and save token.POST https://httpbin.org/postContent-Type: application/json{ 'token': 'my-secret-token'}> {% client.global.set('auth_token', response.body.json.token); %}### Authorization by token, part 2. Use token to authorize.GET https://httpbin.org/headersAuthorization: Bearer {{auth_token}}###
斷言方式
### Successful test: check response status is 200GET https://httpbin.org/status/200> {%client.test('Request executed successfully', function() { client.assert(response.status === 200, 'Response status is not 200');});%}### Failed test: check response status is 200GET https://httpbin.org/status/404> {%client.test('Request executed successfully', function() { client.assert(response.status === 200, 'Response status is not 200');});%}### Check response status and content-typeGET https://httpbin.org/get> {%client.test('Request executed successfully', function() { client.assert(response.status === 200, 'Response status is not 200');});client.test('Response content-type is json', function() { var type = response.contentType.mimeType; client.assert(type === 'application/json', 'Expected ’application/json’ but received ’' + type + '’');});%}### Check response bodyGET https://httpbin.org/get> {%client.test('Headers option exists', function() { client.assert(response.body.hasOwnProperty('headers'), 'Cannot find ’headers’ option in response');});%}###
以上就是IntelliJ IDEA 自帶的 HTTP Client 接口調(diào)用插件吊打 Postman的詳細(xì)內(nèi)容,更多關(guān)于idea HTTP Client插件的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!
相關(guān)文章:
1. ASP常用日期格式化函數(shù) FormatDate()2. 如何在jsp界面中插入圖片3. jsp+servlet簡單實(shí)現(xiàn)上傳文件功能(保存目錄改進(jìn))4. 得到XML文檔大小的方法5. XML入門的常見問題(二)6. ASP.NET Core實(shí)現(xiàn)中間件的幾種方式7. 在JSP中使用formatNumber控制要顯示的小數(shù)位數(shù)方法8. JavaScrip簡單數(shù)據(jù)類型隱式轉(zhuǎn)換的實(shí)現(xiàn)9. jsp實(shí)現(xiàn)textarea中的文字保存換行空格存到數(shù)據(jù)庫的方法10. CSS3實(shí)例分享之多重背景的實(shí)現(xiàn)(Multiple backgrounds)
