介绍
使用 cURL
访问或测试需要通过 token 进行身份验证的接口时,我们可以将登录接口返回的 token 保存到一个变量中,在访问其他接口时直接通过该变量实现身份验证。
如果使用的是 Postman 来测试接口,如何配置 token 可以参见另一篇介绍:
怎样在 Postman 中配置 token,实现登录一次其他请求自动设置 token?
在 Linux 中如何设置 token
1. 使用 cURL 和 jq 获得 Bearer token
请求授权接口,通过 jq
解析接口返回的 JSON 将 token 保存到一个变量中
TOKEN=$(curl -s -X POST -H 'Accept: application/json' -H 'Content-Type: application/json' --data '{"username":"username","password":"password","rememberMe":false}' https://itmob.cn/api/logintest | jq -r 'token')
此示例中,登录接口需要一个包含用户名、密码和 rememberMe 字段的 POST 请求,通过 jq
解析接口返回的 JSON,其中包含一个名为 token 的字段。实际使用中根据您自己的需要进行调整。
2. 在 Authorization 请求头中传递 Bearer token
curl -H 'Accept: application/json' -H "Authorization: Bearer ${TOKEN}" https://itmob.cn/api/other-resource
访问其他接口时,将上一步中 jq 解析到的 token 字段添加到 Authorization 请求头。
在 Windows 中如何设置 token
1. 在 PowerShell 中执行 cURL
这里先介绍在 PowerShell 中执行 cURL 时如何设置 token。因为从 Powershell 3.0 开始集成了解析 JSON 的 ConvertFrom-Json
,因此如果 PowerShell 的版本是 PowerShell 3.0+,可用直接在 PowerShell 中操作而无需安装第三方程序来解析 JSON。
可以通过 $Host.Version
查看当前的版本信息
PS C:\Users\itmob.cn> $Host.Version
Major Minor Build Revision
----- ----- ----- --------
5 1 11011 1111
访问登录接口,解析 JSON,将 token 保存到变量中
$TOKEN=(curl -Method POST -Body '{"username":"username","password":"password","rememberMe":false}' https://itmob.cn/api/logintest | ConvertFrom-Json).token
测试接口返回的 json 是:{“token”:”xqoq39hg81…”},所以使用 $TOKEN=(...).token
来获取 json 中的 token 字段。
使用 cURL 测试接口,并将 token 添加到 Authorization
curl -V -Method POST -Headers @{"Authorization"="Bearer $TOKEN"} https://itmob.cn/api/tokentest
查看 TOKEN 变量中保存的 token 信息
$TOKEN=(curl -Method POST -Body '{"username":"username","password":"password","rememberMe":false}' https://itmob.cn/api/logintest | ConvertFrom-Json).token
$TOKEN
xqoq39hg81…
2. 在命令行 CMD 中执行 cURL
如果使用普通的命令行 CMD,则需要用到一个第三方工具 jq
:https://stedolan.github.io/jq/ 用于解析 JSON
访问登录接口,解析 JSON,将 token 保存到变量中
for /F "delims=" %i in ('curl -s -X POST --data "{"username":"username","password":"password","rememberMe":false}" https://itmob.cn/api/logintest') do set TOKEN=%i
# 查看变量中保存的 token
echo %TOKEN%
xqoq39hg81…
使用 cURL 测试接口,并将 token 添加到 Authorization
curl -H "Accept: application/json" -H "Authorization: Bearer %TOKEN%" https://itmob.cn/api/tokentest