目录

IntelliJ中基于文本的HTTP客户端

IntelliJ提供了一个纯基于文本的HTTP客户端。尽管一开始听起来可能很奇怪,但事实证明这是一个非常有用的功能。

入门

首先,我们需要创建一个名称以.http.rest结尾的文件。例如payment.rest

要发出简单的GET请求,我们必须在新创建的文件中写下该请求。

例如:

1
GET http://localhost:8001/1

IntelliJ现在在该行旁边添加了一个小的Run-Icon,它可以执行请求。

  • 响应结果:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
GET http://localhost:8001/1

HTTP/1.1 200 
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 06 Nov 2020 08:06:30 GMT
Keep-Alive: timeout=60
Connection: keep-alive

{
  "code": 200,
  "desc": "处理成功",
  "data": {
    "id": 1,
    "serial": "aaabbb01"
  }
}

Response code: 200; Time: 630ms; Content length: 62 bytes

Cannot preserve cookies, cookie storage file is included in ignored list:
> /Users/david/my/study/project/cloud2020/.idea/httpRequests/http-client.cookies
  • 如果要添加JSON参数的请求头,只需添加Content-Type标头和请求正文:
1
2
3
4
GET localhost:8001/payment/1
cookie: PHPSESSID=e78ldgop6jub72kp636vqcsj6l
user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36
Content-Type: application/json
  • 同一文件中的多个请求需要使用**###**分隔。例如:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
GET localhost:8001/payment/1
cookie: PHPSESSID=e78ldgop6jub72kp636vqcsj6l
user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36
Content-Type: application/json

###

GET localhost:8001/payment/1
cookie: PHPSESSID=e78ldgop6jub72kp636vqcsj6l
user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36
Content-Type: application/json

使用变量

使用{{..}}语法,我们可以向请求中添加变量。也许我们想针对不同的环境发出相同的请求。为此,我们可以使用host变量更新请求:

1
GET {{host}}/payment/{{id}}}

接下来,我们需要定义{{host}}变量。为此,我们创建一个http-client.env.json文件并添加以下内容:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
{
  "development": {
    "host": "http://localhost:8001",
    "id": 1
  },
  "production": {
    "host": "http://localhost:8002",
    "id": 1
  }
}

这定义了两个环境:developmentproduction。两种环境都使用不同的值定义host变量。

运行请求时,我们现在可以选择所需的环境:

20201106162058

团队共享

基于文本的简单请求定义使您可以轻松地与团队共享。您甚至可以将请求文件检入版本控制系统。当然,您不希望签入执行请求可能需要的密码或API密钥。IntelliJ通过单独的私有环境文件(http-client.private.env.json)支持此功能。与前面的环境示例一样,我们可以使用此文件来定义变量。

例如:

1
2
3
4
5
{
  "dev": {
    "api-key": "S3DKLJ56698CR3T"
  }
}

为了确保安全性,我们可以从版本控制系统中明确排除此文件。