JasonWu73 / Blog

因网络原因,已自建博客站点
https://www.wuxianjie.net
MIT License
13 stars 4 forks source link

IntelliJ IDEA HTTP Client #80

Open JasonWu73 opened 4 years ago

JasonWu73 commented 4 years ago

IntelliJ IDEA 的 HTTP 客户端编辑器是以 .http.rest 结尾的文本文件。

语法

Method Request-URI HTTP-Version
Header-field: Header-value

Request-Body

其中注释是以 //# 开头的脚本。

可使用 ### 来分隔多个请求。

对于 GET 请求,可省略请求方法。

可将长请求代码分成多行书写:

// Using line breaks with indent
GET http://example.com:8080
    /api
    /html
    /get
    ?id=123
    &value=content

在请求行上加入 @no-log 注释可取消记录请求历史:

// @no-log
GET example.com/api

在请求行上加入 @no-cookie-jar 注释可取消保存 cookies:

// @no-cookie-jar
GET example.com/api

使用 Ctrl+J 可选择动态模板插入。

还可点击 Examples 标签,查看相应 HTTP 请求的示例代码。

使用变量

使用 {{variable}} 引用变量:

响应处理脚本

在文件中直接插入响应处理脚本,以 > 开头,并以 {% %} 结尾:

GET host/api/test

> {%
// Response Handler Script
...
%}

HTTP Response Handler 是用 ECMAScript 5.1 编写的,并暴露出了两个对象:

例如 {% client.global.set("auth_token", response.body.json.token); %} 可被后续脚本通过 {{auth_token}} 的方式引用。

可在 clientresponse 对象上,按 Ctrl+B 查看源码文档。

执行

鼠标定位到请求的第一行脚本,然后按 Alt+Enter,可便捷地执行请求。

此外,Ctrl+Click 第一行请求,可通过默认浏览器打开该地址。

示例脚本

rest-client.private.env.json 存放自定义变量:

{
  "production": {
    "baseUrl": "https://aip.baidubce.com",
    "faceBaseUrl": "https://aip.baidubce.com/rest/2.0/face/v3",
    "apiKey": "xxx",
    "secretKey": "xxx"
  }
}

HTTP API.rest(后缀也可以为 .http)存放 API 请求:

# 获取 Access Token
POST {{baseUrl}}/oauth/2.0/token HTTP/1.1
Content-Type: application/x-www-form-urlencoded

grant_type=client_credentials
&client_id={{apiKey}}
&client_secret={{secretKey}}

> {%
client.global.set('accessToken', response.body['access_token']);
client.log(client.global.get('accessToken'));
%}

###

# 人脸检测
POST {{faceBaseUrl}}/detect?access_token={{accessToken}} HTTP/1.1
Content-Type: : application/json

{
  "image":"...",
  "image_type": "BASE64",
  "face_field": "quality,beauty",
  "liveness_control": "HIGH"
}
FubinSama commented 3 years ago

官网连最基本的用base64等编码拼接参数的教程都没有,搜博客,又千篇一律。这东西连这种功能都没有?

JasonWu73 commented 3 years ago

官网连最基本的用base64等编码拼接参数的教程都没有,搜博客,又千篇一律。这东西连这种功能都没有?

可以先把文件转成Base64(可通过线上工具或自行编码),然后放到请求体的参数中就可以了。