所有 REST 私有请求头都必须包含以下内容:
OK-ACCESS-KEY
字符串类型的 APIKey (遵循这个指南来生成一个 API 密钥)OK-ACCESS-SIGN
使用 HMAC SHA256 哈希函数获得哈希值,再使用 Base-64 编码(请参阅签名)OK-ACCESS-TIMESTAMP
发起请求的时间(UTC),如:2020-12-08T09:08:57.715ZOK-ACCESS-PASSPHRASE
你在创建 API 密钥时指定的 Passphrase一些端点,例如 WaaS,需要额外的标头:
OK-ACCESS-PROJECT
你的项目的项目 ID(可在项目详细信息下找到)所有请求都应该含有application/json
类型内容,并且是有效的 JSON。
OK-ACCESS-SIGN
的请求头:
timestamp + method + requestPath + body
字符串(+表示字符串连接),以及 SecretKey,使用 HMAC SHA256 方法加密,通过 Base-64 编码输出而得到的。例子:
sign=CryptoJS.enc.Base64.stringify(CryptoJS.HmacSHA256(timestamp + 'GET' + '/api/v5/account/balance?ccy=BTC', SecretKey))
timestamp
的值与OK-ACCESS-TIMESTAMP
请求头相同,为 ISO 格式
2020-12-08T09:08:57.715Z
GET/POST
/api/v5/account/balance
{"instId":"BTC-USDT","lever":"5","mgnMode":"isolated"}
GET
请求参数是算作 requestPath,不算 bodyPostman 是一款流行的 API 开发和测试工具,允许开发人员设计、测试和记录 API。它提供了对用户友好的图形界面,用于向 API 发送 HTTP 请求。
如果你还没有安装 Postman,你可以免费从 Postman 网站下载它:https://www.postman.com/
在 Headers 选项卡下,添加以下键-值对:
OK-ACCESS-KEY
OK-ACCESS-PASSPHRASE
OK-ACCESS-PROJECT
(如果需要)OK-ACCESS-SIGN
)和时间戳(OK-ACCESS-TIMESTAMP
)。GET 请求:
var method = pm.request.method;
var now = new Date();
var isoString = now.toISOString();
var path = pm.request.url.getPathWithQuery();
var sign=CryptoJS.enc.Base64.stringify(CryptoJS.HmacSHA256(isoString + method + path, pm.variables.replaceIn('{{secret_key}}')));
pm.request.headers.add({
key: 'OK-ACCESS-SIGN',
value: sign
});
pm.request.headers.add({
key: 'OK-ACCESS-TIMESTAMP',
value: isoString
});
POST 请求:
var method = pm.request.method;
var now = new Date();
var isoString = now.toISOString();
var path = pm.request.url.getPathWithQuery();
var bodyStr = pm.request.body.raw;
var sign=CryptoJS.enc.Base64.stringify(CryptoJS.HmacSHA256(isoString + method + path + bodyStr, pm.variables.replaceIn('{{secret_key}}')))
pm.request.headers.add({
key: 'OK-ACCESS-SIGN',
value: sign
});
pm.request.headers.add({
key: 'OK-ACCESS-TIMESTAMP',
value: isoString
});