1 前言
當我們在開發(fā)調試 Web 服務的時候,需要對接口進行調用測試;或者對接第三方系統(tǒng)時,需要調用遠程第三方的接口進行聯(lián)調。這時,相信大家首選的工具一般會是 Postman
,一款當今比較流行而且功能齊全的接口調用調試工具。如下所示:
不過我們一般使用 IntelliJ IDEA
代碼編輯器來開發(fā)和調試 Web 服務,如果使用 Postman 工具來測試接口,不僅要在電腦上安裝 Postman ,還需要在不同工具之間切換,比較麻煩。幸運地的是 IDEA 自帶了一款簡潔輕量級的接口調用插件,HTTP Client
。
2 HTTP Client
HTTP Client 是 IDEA 自帶的一款簡潔輕量級的接口調用插件,通過它,我們能在 IDEA 上開發(fā),調試,測試
RESTful Web 服務
。
注意:確保 HTTP Client 插件是安裝啟動的,默認是已安裝啟動的。若沒有安裝,在 File - Settings - Plugins 路徑下進行安裝,如下:
2.1 創(chuàng)建 HTTP Client 文件
可以創(chuàng)建2種文件類型的 HTTP Client 文件,一種是臨時文件(scratch files,不跟項目工程掛鉤),一種是非臨時文件(physical files,跟項目工程掛鉤)。
如果你想創(chuàng)建的 HTTP Client 文件是為了臨時調用接口測試用的,不需要保留記錄供以后使用,則可以使用臨時文件;如果想存檔記錄請求參數(shù),請求結果等,后續(xù)再繼續(xù)使用,或者隨項目提交到遠程git倉庫,則建議使用非臨時文件。
創(chuàng)建 HTTP Client 臨時文件
打開后,顯示界面和Postman差不多,不過這種風格的界面被棄用了,官方不推薦我們使用,在最新版本的 IDEA 中已經沒有這個界面了。
官方推薦我們使用編碼式的風格界面,點擊上個界面頂部的 Convert request to the new format
,即可打開新的 HTTP Client 界面。
創(chuàng)建 HTTP Client 非臨時文件
可以在項目根目錄下創(chuàng)建一個存儲請求文件的文件夾,然后在里面創(chuàng)建 HTTP Client 請求文件,如下:
2.2 HTTP Client 特性
HTTP 請求存儲在以.http
或.rest
為后綴的文件中,并且?guī)в?API
小圖標。
請求文件可以包含多個請求,多個請求中間用3個井號 ###
隔開;如果是臨時文件,每次執(zhí)行請求后,會在請求下方生成對應請求結果的文件鏈接,按住 Ctrl + 鼠標左鍵
可以打開。
所有的請求結果,請求歷史記錄,cookies等信息會存放在 .idea
文件夾下,如下:
2.3 如何創(chuàng)建請求
使用右上角的快捷按鈕創(chuàng)建請求,可以選擇不同方式的請求,如下:
使用快捷鍵進行創(chuàng)建請求,例如輸入 gtr
可以快速創(chuàng)建一個簡單的 GET 請求,如下:
使用 Ctrl + J
快捷鍵可以查看創(chuàng)建 HTTP 請求的所有快捷鍵,如下:
通過 cURL
創(chuàng)建請求,點擊右上角的 Convert form cURL
按鈕,然后輸入 cURL 地址即可自動轉換,如下:
2.4 請求方式
GET
### GET request with a header
GET https://httpbin.org/ip
Accept: application/json
### GET request with parameter
GET https://httpbin.org/get?show_env=1
Accept: application/json
### GET request with environment variables
GET {{host}}/get?show_env={{show_env}}
Accept: application/json
### GET request with disabled redirects
# @no-redirect
GET http://httpbin.org/status/301
### GET request with dynamic variables
GET http://httpbin.org/anything?id={{$uuid}}&ts={{$timestamp}}
###
POST
### Send POST request with json body
POST https://httpbin.org/post
Content-Type: application/json
{
"id": 999,
"value": "content"
}
### Send POST request with body as parameters
POST https://httpbin.org/post
Content-Type: application/x-www-form-urlencoded
id=999&value=content
### Send a form with the text and file fields
POST https://httpbin.org/post
Content-Type: multipart/form-data; boundary=WebAppBoundary
--WebAppBoundary
Content-Disposition: form-data; name="element-name"
Content-Type: text/plain
Name
--WebAppBoundary
Content-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 body
POST https://httpbin.org/post
Content-Type: application/json
{
"id": {{$uuid}},
"price": {{$randomInt}},
"ts": {{$timestamp}},
"value": "content"
}
###
PUT
PUT http://localhost:8080/person/put
Content-Type: application/json
{"name": "陳皮","age": 17}
PATCH
###
PATCH http://localhost:8080/person/put
Content-Type: application/json
{"name": "陳皮","age": 17}
鑒權方式
### Basic authorization.
GET https://httpbin.org/basic-auth/user/passwd
Authorization: Basic user passwd
### Basic authorization with variables.
GET https://httpbin.org/basic-auth/user/passwd
Authorization: Basic {{username}} {{password}}
### Digest authorization.
GET https://httpbin.org/digest-auth/realm/user/passwd
Authorization: Digest user passwd
### Digest authorization with variables.
GET https://httpbin.org/digest-auth/realm/user/passwd
Authorization: Digest {{username}} {{password}}
### Authorization by token, part 1. Retrieve and save token.
POST https://httpbin.org/post
Content-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/headers
Authorization: Bearer {{auth_token}}
###
斷言方式
{%
client.test("Request executed successfully", function() {
client.assert(response.status === 200, "Response status is not 200");
});
關于HTTP Client的特性和HTTP的請求方式就介紹到此,以上就是IntelliJ idea中自帶的接口調用插接HTTP Client相關內容,更多關于idea HTTP Client插件的資料請關注W3Cschool其它相關文章!