AK(App-Key):访问密钥ID,与私有访问密钥一起使用,对请求进行加密签名。可标识发送方。
SK(Secret-Key):私有访问密钥,与访问密钥ID一起使用,对请求尽情加密签名。
具体请求方式如下,所有接口在请求头中加入以下参数:
Content-Type:application/jsonApp-Key: {AK}Timestamp:时间戳,秒级,API访问生命周期前后五分钟内,超出即失效Signature: HexEncode(HMAC-SHA256(AK+Timestamp+请求体,SK)),加密方式通过HMAC-SHA256,并包装SK。var timestamp = Math.round(new Date()/1000);
var appKey = "AK";
var requestBody = pm.request.body.raw;
var secretKey = "AS";
pm.environment.set("Timestamp", timestamp);
var signContent = appKey + timestamp + requestBody;
console.log("signContent:" + signContent);
var signature = CryptoJS.HmacSHA256(signContent, secretKey).toString();
pm.environment.set("Signature", signature);
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.StandardCharsets;
/**
* 签名工具类
*/
public class SignatureUtils {
private static final String ALGORITHM = "HmacSHA256";
public static String createSignature(String accessKey, String secretKey, Long timeStamp, String param) {
String data = accessKey + timeStamp + param;
try {
Mac mac = Mac.getInstance(ALGORITHM);
mac.init(new SecretKeySpec(secretKey.getBytes(StandardCharsets.UTF_8), ALGORITHM));
byte[] bytes = mac.doFinal(data.getBytes(StandardCharsets.UTF_8));
StringBuilder builder = new StringBuilder(bytes.length * 2);
for (byte b : bytes) {
builder.append(String.format("%02x", b & 0xff));
}
return builder.toString();
} catch (Exception e) {
throw new RuntimeException("Build Signature error", e);
}
}
}
https://developer.tbbpower.com
接口地址:POST /pdm/firmwarepackage
| 字段名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| primaryKey | 字符串 | 否 | 系统包ID |
| 字段名 | 类型 | 说明 |
|---|---|---|
| code | 数字 | 200正常返回,非200异常 |
| msg | 字符串 | 当code为200时为空,非200时为异常信息 |
| rows | 数组对象 | 系统包对象数组,参照下方系统包对象 |
| 字段名 | 类型 | 说明 |
|---|---|---|
| name | 字符串 | 系统包名称 |
| primaryKey | 字符串 | ID |
| version | 字符串 | 版本 |
| firmwareList | 数组对象 | 软件列表,参照下方软件对象 |
| 字段名 | 类型 | 说明 |
|---|---|---|
| firmwareDetail | 对象 | 附件详情,参照下方附件详情对象 |
| upgradePrompt | 数值 | 重要固件升级提示,0-关,1-开 |
| languageSetting | 字符串 | 提示语设置,数组对象的json字符串,格式如下: |
[{
"language":"zh", // 语言,zh-中文,en-英语,de-德语,fr-法语,es-西班牙语,it-意大利语,nl=荷兰语,no-挪威语
"text":"升级更新" // 提示语
}]
| 字段名 | 类型 | 说明 |
|---|---|---|
| name | 字符串 | 附件名称 |
| externalVersion | 字符串 | 外部版本号 |
| itemCode | 字符串 | 品号 |
| itemName | 字符串 | 品名 |
| attachmentList | 数组对象 | 附件文件详情列表,参照下方附件文件详情对象 |
| 字段名 | 类型 | 说明 |
|---|---|---|
| name | 字符串 | 名称 |
| url | 字符串 | minio下载地址 |
| format | 字符串 | 后缀 |
| size | 数值 | 大小 |
接口地址:POST /pdm/download
| 字段名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| url | 字符串 | 是 | minio下载地址 |
注意:此接口返回的是文件流,而非JSON格式数据。
成功时,响应头(Response Headers)包含:
Content-Type:文件的MIME类型(如 application/octet-stream、application/zip、application/pdf等)Content-Disposition:包含文件名的下载提示,格式为 attachment; filename="xxx"响应体(Response Body)为二进制文件流,需使用 responseType: 'blob' 或 arraybuffer 接收。