从 IntelliJ 的 http 客户端中的文件读取存储的响应

问题描述 投票:0回答:1

我正在使用 IntelliJ 的 Http 客户端插件 发送使用 OAuth2 的请求。

如果我创建令牌请求,我可以使用响应来验证后续请求:

###
POST http://localhost:{{port}}/token
Content-Type: application/x-www-form-urlencoded

grant_type = client_credentials &
client_id = {{username}} &
client_secret = {{password}} 

> {% client.global.set("token", response.body.access_token); %}

###
POST http://localhost:{{port}}/some-request
Content-Type: application/json
Authorization: Bearer {{token}}

{ "a": "body" }

我想将获取令牌与实际请求分开。保存令牌效果很好:

###
POST http://localhost:{{port}}/token
Content-Type: application/x-www-form-urlencoded

grant_type = client_credentials &
client_id = {{username}} &
client_secret = {{password}} 

>>! oauth-token.json

运行后,

oauth-token.json
看起来像这样:

{
  "access_token": "[redacted]",
  "token_type": "bearer"
}

我的问题是,如何从不同的

oauth-token.json
文件中读取
.http

我尝试了以下各种变体:

< ./oauth-token.json
> {% client.global.set("token", response.body.access_token); %}

###
POST http://localhost:{{port}}/some-request
Content-Type: application/json
Authorization: Bearer {{token}}

{ "a": "body" }

但是我收到错误:

运行“All in some_request”时出错
语法错误:C:\path-to\oauth-token.json:10:16 预期;但发现:

注意

oauth-token.json
有四行,错误在第十行。

http intellij-idea client
1个回答
0
投票

您可以在请求中使用 JavaScript 片段来加载 JSON 文件、提取令牌并将其分配给变量以供进一步使用。

使用

client.global.set()
将 JSON 文件中的令牌存储在您的
.http
文件中:

@import "./oauth-token.json" as oauthTokenJson

> {%
    const tokenData = oauthTokenJson;
    client.global.set("token", tokenData.access_token);
%}

client.global.set()
函数将全局access_token存储为
"token"

然后在后续请求中使用此令牌,如下所示:

POST http://localhost:{{port}}/some-request
Content-Type: application/json
Authorization: Bearer {{token}}

{ "a": "body" }
  • 确保
    oauth-token.json
    .http
    文件位于同一目录中。
  • 验证 JSON 结构是否正确(特别是如果您 手动复制部分 JSON)。
  • 确保 IntelliJ 有权访问该文件。
© www.soinside.com 2019 - 2024. All rights reserved.