我正在使用 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
有四行,错误在第十行。
您可以在请求中使用 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
文件位于同一目录中。