# API接口
参考接口参数文档发起HTTP请求,如无特殊声明,接口的输入参数和输出数据编码全部统一为 UTF-8 编码方式
# 1. 心跳检测
- 接口简介:
获得所有节点的的IP及心跳检测时间
- URL & Method
接口地址 | 请求方式 |
---|---|
/heartbeat | GET |
- 返回结果参数说明
{
"节点IP":"心跳检测时间",
"节点IP":"心跳检测时间",
...
}
- 成功返回结果示例
状态码 200
{
"10.29.1.1:12345":"2022-05-03T15:55:54.823354221+08:00",
"10.29.1.2:12345":"2022-05-03T15:55:54.694787184+08:00",
"10.29.1.3:12345":"2022-05-03T15:55:54.640107111+08:00",
"10.29.1.4:12345":"2022-05-03T15:55:54.743627887+08:00",
"10.29.1.5:12345":"2022-05-03T15:55:54.783532068+08:00",
"10.29.1.6:12345":"2022-05-03T15:55:54.863248773+08:00"
}
# 2. 节点的系统信息
- 接口简介:
获得某个节点的操作系统信息、CPU、内存、硬盘使用信息
- URL & Method
接口地址 | 请求方式 |
---|---|
/nodeSystemInfo/节点 ip | GET |
节点 ip为必填项
- 返回结果参数说明
名称 | 含义 | 规则说明 | |
---|---|---|---|
cpu | CPU相关信息 | ||
physicalCnt | CPU物理核数 | ||
logicalCnt | CPU逻辑核数 | ||
cpuTotalPercent | 1s内负载 | ||
mem | 内存相关信息 | ||
total | 内存总大小 | 单位:B | |
available | 可用内存大小 | 单位:B | |
memTotalPercent | 内存使用率 | ||
disk | |||
path | 分区名 | ||
total | 分区总大小 | 单位:B | |
used | 分区已使用容量 | 单位:B | |
free | 分区空闲容量 | 单位:B | |
usedPercent | 分区使用百分比 | ||
systemInfo | 操作系统相关信息 | ||
kernelVersion | 内核版本 | ||
platform | 平台 | ||
osFamily | 操作系统家族 | ||
osVersion | 操作系统版本 |
- 成功返回结果示例
状态码 200
{
"cpu": {
"physicalCnt": 6,
"logicalCnt": 12,
"cpuTotalPercent": 16.87
},
"mem": {
"total": 16651956224,
"available": 8689909760,
"memTotalPercent": 43.87
},
"disk": {
"path": "/",
"total": 73445531648,
"used": 39056961536,
"free": 30613696512,
"usedPercent": 56.06
},
"systemInfo": {
"kernelVersion": "5.10.101-amd64-desktop",
"platform": "debian",
"osFamily": "debian",
"osVersion": "10.10"
}
}
# 3. 获取桶名分页列表
- 接口简介:
获得所有桶名列表,约定每页显示5条
- URL & Method
接口地址 | 请求方式 |
---|---|
/bucket/page | GET |
page页数为必填项
- 返回结果参数说明
名称 | 含义 | 规则说明 |
---|---|---|
Size | 总条数 | |
Data | 当前页的数据 |
- 成功返回结果示例
page=1时,状态码 200
{
"size":2,
"data":[
"aaa",
"ttt"
]
}
# 4. 查询桶是否存在
- 接口简介:
通过桶名定位桶是否存在
- URL & Method
接口地址 | 请求方式 |
---|---|
/bucket/ | HEAD |
- 请求头
请求头 | 值 | 规则 |
---|---|---|
bucket | 桶名 | 必填 |
- 返回状态码
状态码 | 含义 |
---|---|
200 | 桶存在 |
404 | 桶不存在 |
500 | 服务端错误 |
# 5. 新增桶
- 接口简介:
新增桶
- URL & Method
接口地址 | 请求方式 |
---|---|
/bucket/ | PUT |
- 请求头
请求头 | 值 | 规则 |
---|---|---|
bucket | 桶名 | 必填 |
- 返回状态码
状态码 | 含义 |
---|---|
201 | 新增桶成功 |
400 | 请求头不存在 |
500 | 服务端错误 |
# 6. 删除桶
- 接口简介:
删除桶
- URL & Method
接口地址 | 请求方式 |
---|---|
/bucket/ | DELETE |
- 请求头
请求头 | 值 | 规则 |
---|---|---|
bucket | 桶名 | 必填 |
- 返回状态码
状态码 | 含义 |
---|---|
200 | 删除桶成功 |
400 | 请求头不存在 |
500 | 服务端错误 |
# 7. 对象最新版本分页列表
- 接口简介:
获得所有对象最新版本的分页查询列表,约定每页显示5条
- URL & Method
接口地址 | 请求方式 |
---|---|
/allVersions/bucket /name ?page=页数 | GET |
bucket为桶名,必填项
name为对象名,为选填项,用于搜索
页数为必填项
- 返回结果参数说明
名称 | 含义 | 规则说明 | |
---|---|---|---|
Size | 总条数 | ||
Data | 当前页的数据 | ||
Name | 对象名 | ||
Version | 对象版本 | ||
Size | 对象该版本大小 | ||
Hash | 对象该版本的hash值 | ||
Time | 最后一次操作该对象的时间 | 服务端默认将以此字段将结果倒序排序 |
- 成功返回结果示例
name
为空,page=2时,状态码 200
{
"Size": 8,
"Data": [
{
"Name": "test2.txt",
"Version": 1,
"Size": 5,
"Hash": "NjAzMDNhZTIyYjk5ODg2MWJjZTNiMjhmMzNlZWMxYmU3NThhMjEzYzg2YzkzYzA3NmRiZTlmNTU4YzExYzc1Mg==",
"Time": 20220503161720
},
{
"Name": "test.bat",
"Version": 1,
"Size": 26,
"Hash": "NTY4OTZlNzlkMmUxOTJlNDUyOTYzOWMwZmQxOGY0YWVjN2QwYTljOWU4ZjY5MzdjYWMyMGQ0M2MwNzQxYzA1Yw==",
"Time": 20220503161720
},
{
"Name": "100file",
"Version": 1,
"Size": 100000000,
"Hash": "Njk3ODQ2ZTQ5NWVhNmY2ZDk3N2QzOTg4ZTYwYTUyMDk5MTI4NmUxNTg4ZjM5MjVkZTYwMTI0N2E0MDE1ZjEwNg==",
"Time": 20220502185641
}
]
}
name
为test2,page=1时,状态码 200
{
"Size": 1,
"Data": [
{
"Name": "test2.txt",
"Version": 1,
"Size": 5,
"Hash": "NjAzMDNhZTIyYjk5ODg2MWJjZTNiMjhmMzNlZWMxYmU3NThhMjEzYzg2YzkzYzA3NmRiZTlmNTU4YzExYzc1Mg==",
"Time": 20220503161720
}
]
}
# 8. 单个对象全部版本列表
- 接口简介:
默认开启了版本控制,此API用于获取某个对象全部版本
- URL & Method
接口地址 | 请求方式 |
---|---|
/versions/bucket /name | GET |
bucket为桶名,为必填项
name为对象名,为必填项
- 返回结果参数说明
名称 | 含义 | 规则说明 |
---|---|---|
Name | 对象名 | |
Version | 对象版本 | |
Size | 对象该版本大小 | |
Hash | 对象该版本的hash值 | |
Time | 最后一次操作该对象的时间 | 服务端默认将以此字段将结果倒序排序 |
- 成功返回结果示例
name
为test.bat,状态码 200
[
{
"Name": "test.bat",
"Version": 3,
"Size": 26,
"Hash": "NTY4OTZlNzlkMmUxOTJlNDUyOTYzOWMwZmQxOGY0YWVjN2QwYTljOWU4ZjY5MzdjYWMyMGQ0M2MwNzQxYzA1Yw==",
"Time": 20220503162711
},
{
"Name": "test.bat",
"Version": 2,
"Size": 26,
"Hash": "NTY4OTZlNzlkMmUxOTJlNDUyOTYzOWMwZmQxOGY0YWVjN2QwYTljOWU4ZjY5MzdjYWMyMGQ0M2MwNzQxYzA1Yw==",
"Time": 20220503162708
},
{
"Name": "test.bat",
"Version": 1,
"Size": 26,
"Hash": "NTY4OTZlNzlkMmUxOTJlNDUyOTYzOWMwZmQxOGY0YWVjN2QwYTljOWU4ZjY5MzdjYWMyMGQ0M2MwNzQxYzA1Yw==",
"Time": 20220503161720
}
]
# 9. 普通上传
- 接口简介:
上传Size较小的对象文件,如果大文件建议使用专用接口分片上传
- URL & Method
接口地址 | 请求方式 |
---|---|
/objects/bucket /name | PUT |
bucket为桶名,为必填项
name为对象名,为必填项
- 请求头
请求头 | 值 | 规则 |
---|---|---|
Digest | SHA-256=客户端计算对象的hash值 | 必填 |
Content-Type | multipart/form-data | 必填 |
Accept-Encoding | gzip | 非必填,除非您可以在客户端gzip压缩 |
- 请求体
对象文件
- 返回状态码
状态码 | 含义 |
---|---|
200 | 成功 |
400 | 请求头缺少Digest或路径参数中缺少桶名 |
500 | 服务端错误 |
# 10. 获得分片上传Token
- 接口简介:
获得分片上传的Token
- URL & Method
接口地址 | 请求方式 |
---|---|
/objects/bucket /name | POST |
bucket为桶名,为必填项
name为对象名,为必填项
- 请求头
请求头 | 值 | 规则 |
---|---|---|
Digest | SHA-256=客户端计算对象的hash值 | 必填 |
Content-Type | multipart/form-data | 必填 |
Size | 对象的大小 | 必填 |
- 返回状态码
状态码 | 含义 |
---|---|
201 | token创建成功 |
200 | 对象存在成功上传记录 |
403 | 请求头中Size错误 |
400 | 请求头缺少Digest或路径参数中缺少桶名 |
500 | 服务端错误 |
503 | 数据节点不足6个 |
- 成功返回结果示例
name
为file,bucket
为aaa,状态码 201
/temp/aaa/eyJOYW1lIjoiZmlsZSIsIlNpemUiOjEwMDAwMCwiSGFzaCI6IllqTTNabUV4TW1VNVlUVmlORE15WVdGaVpHRXpaREV5WW1WaVlqRTBaalV6Tm1VM1pqTXpNekkyWmpCbVltRmhOemRrWlRBMU9HVmhNVFEwTjJFMVlRPT0iLCJTZXJ2ZXJzIjpbIjEwLjI5LjEuNjoxMjM0NSIsIjEwLjI5LjEuNDoxMjM0NSIsIjEwLjI5LjEuMToxMjM0NSIsIjEwLjI5LjEuMzoxMjM0NSIsIjEwLjI5LjEuMjoxMjM0NSIsIjEwLjI5LjEuNToxMjM0NSJdLCJVdWlkcyI6WyIzODI3ZjJjNi1iMGM5LTRlNjItYTlkYi04NDZlMzZhMzRiZjgiLCIyZTQwNTE0YS0xNDFjLTQxMjItOGI1ZC1mZGVkNmNjYzJhYTciLCI1ZTMyNzlkOS0zM2YzLTQ5ZjItOTY3Yy1iMTEyMGY4ZDc2MTYiLCI2ZjY4MDU4NC04Njk2LTRhMjctYTcxMC0xOTdlNDU5MDUxYzYiLCI2OGVhZDgwMC02YThkLTQxMzAtODJhZS0wNzdmMDA2ZTNjYmYiLCJjOTYzYzQ2NS1jOWNmLTQ3NGEtYWRiOC0xMjc3OWMzMWEyNDYiXX0=
# 11. 分片上传
- 接口简介:
上传Size较大的对象文件,并且约定每次分片数据为5MB,使用前,确保您已经获得了分片上传的Token,否则,请移步获得分片上传Token
- URL & Method
接口地址 | 请求方式 |
---|---|
/objects/bucket /Token | PUT |
bucket为桶名,为必填项
Token为分分片上传的token,为必填项
- 请求头
请求头 | 值 | 规则 |
---|---|---|
Content-Type | multipart/form-data | 必填 |
range | first~last | 必填,除非是第一个分片可以为空,并且最后一个分片只填 first~ |
- 请求体
对象分片文件
- 返回状态码
状态码 | 含义 |
---|---|
200 | 成功 |
400 | 路径参数中缺少桶名 |
403 | Token解析失败或分片长度超出对象大小或分片合并时与对象hash计算不一致 |
404 | Token失效或不存在 |
416 | 请求头range错误 |
500 | 服务端错误 |
# 12. 获得分片上传偏移量
- 接口简介:
获得分片上传已上传的大小,作为下一次分片上传的起点
- URL & Method
接口地址 | 请求方式 |
---|---|
token | HEAD |
token为获得分片上传Token中的Token
- 返回头参数说明
名称 | 含义 | 规则说明 |
---|---|---|
Content-Length | 已经上传的字节 |
- 返回状态码
状态码 | 含义 |
---|---|
200 | 成功 |
404 | Token失效或不存在 |
- 成功返回头示例
HTTP/1.1 200 OK
X-Powered-By: Express
content-length: 5242880
date: Tue, 03 May 2022 09:05:04 GMT
connection: close
# 13. 下载对象
- 接口简介:
通过对象名下载对象
- URL & Method
接口地址 | 请求方式 |
---|---|
/objects/bucket /name ?version=版本 | GET |
bucket为桶名,为必填项
name为对象名,为必填项
版本号为必填项
- 请求头
请求头 | 值 | 规则 |
---|---|---|
Accept-Encoding | gzip | 非必填,除非您需要如果获取压缩对象 |
- 返回结果
对象文件
- 返回状态码
状态码 | 含义 |
---|---|
200 | 成功 |
206 | 请求已成功处理,但仅返回了部分内容 |
400 | 路径参数中缺少桶名 |
404 | 对象未找到或已经损坏 |
500 | 服务端错误 |
# 14. 删除对象
- 接口简介:
此接口并不会真正删除对象,而是会为对象标记一个删除版本
- URL & Method
接口地址 | 请求方式 |
---|---|
/objects/bucket /name | DELETE |
bucket为桶名,为必填项
name为对象名,为必填项
- 返回状态码
状态码 | 含义 |
---|---|
200 | 成功 |
400 | 路径参数中缺少桶名 |
500 | 服务端错误 |
# 15. 保留版本
- 接口简介:
对全部对象执行操作:保留几个版本(从最高版本起)
- URL & Method
接口地址 | 请求方式 |
---|---|
/deleteOldMetadata/versionSize | GET |
versionSize为保留版本的数量
# 16. 删除无引用数据的
- 接口简介:
删除数据节点中无ES元数据引用的对象
- URL & Method
接口地址 | 请求方式 |
---|---|
/deleteOrphanServer | GET |
# 17. 全盘扫描恢复
- 接口简介:
扫描所有节点对象文件,如果如果可以修复的执行修复操作
- URL & Method
接口地址 | 请求方式 |
---|---|
/objectScanner | GET |
# 18. 对象存储系统信息
- 接口简介:
获得对象存储系统的一些信息,存储对象数量、上传请求次数、维护次数、系统手动维护信息:包括维护的操作内容及时间
- URL & Method
接口地址 | 请求方式 |
---|---|
/systemInfo/page | GET |
page为系统手动维护信息分页参数,为实际页数-1
- 返回结果参数说明
名称 | 含义 | 规则说明 | |||
---|---|---|---|---|---|
Obj | 对象总数量 | ||||
Put | 上传请求次数 | ||||
Uphold | 维护次数,Echarts日历热力图数据 | ||||
Echarts | 每日上传次数 | ||||
Operation | 维护信息 | ||||
OperationSize | 总数量 | 按照日期分组 | |||
OperationData | 维护操作具体信息 | ||||
Date | 日期 | 服务端默认将以此字段将结果倒序排序 | |||
Data | |||||
Operation | 操作内容 | ||||
Time | 时间 | ||||
Date | 日期 |
- 成功返回结果示例
状态码 200
{
"Obj": 9,
"Put": 149,
"Uphold": 26,
"Echarts": {
"2022-12-25": 8300,
"2022-12-26": 6355,
"2022-12-27": 1664
},
"Operation": {
"OperationSize": 2,
"OperationData": [
{
"Date": "2022-05-02",
"Data": [
{
"Operation": "进行了保留对象版本操作:保留了全部对象的1个版本",
"Time": "18:56:58",
"Date": "2022-05-02"
},
{
"Operation": "进行了对象数据全盘扫描修复的操作",
"Time": "18:57:11",
"Date": "2022-05-02"
},
{
"Operation": "进行了删除无元数据引用的文件的操作",
"Time": "18:57:20",
"Date": "2022-05-02"
}
]
},
{
"Date": "2022-04-08",
"Data": [
{
"Operation": "test",
"Time": "18:43:28",
"Date": "2022-04-08"
},
{
"Operation": "test",
"Time": "18:49:22",
"Date": "2022-04-08"
}
]
}
]
}
}
# 19. 日志查询
- 接口简介:
获得系统日志,可进行条件组合查询,默认查询全部,约定每页显示20条
- URL & Method
接口地址 | 请求方式 |
---|---|
/getLog/page | POST |
page为页数
- 请求体
名称 | 含义 | 规则说明 | |
---|---|---|---|
osName | 日志打印机器ip及name | 可选 | |
level | 日志级别 | 可选 | |
content | 日志关键词 | 可选 | |
dateTime | 可选 | ||
from | 日期查询范围起始值 | 时间戳数值型 | |
to | 日期查询范围结束值 | 时间戳数值型 |
- 返回结果参数说明
名称 | 含义 | 规则说明 | |
---|---|---|---|
Size | 总条数 | ||
Data | 当前页的数据 | ||
osName | 日志打印机器ip及name | ||
level | 日志级别 | ||
dateTime | 日志记录时间 | 时间戳,服务端默认将以此字段将结果倒序排序 | |
content | 日志内容 |
- 成功返回结果示例
查询请求体
{
"level": "INFO",
"osName": "127.0.0.1:12345-lpl-PC",
"content":"-1",
"dateTime": {
"from": 1652861321,
"to": 1652868530
}
}
状态码 200
{
"size": 2,
"data": [{
"osName": "127.0.0.1:12345-lpl-PC",
"level": "INFO",
"dateTime": 1652868481,
"content": "apiServer.go:47: info myLog -1"
}, {
"osName": "127.0.0.1:12345-lpl-PC",
"level": "INFO",
"dateTime": 1652868391,
"content": "apiServer.go:47: info myLog -1"
}]
}
← 部署服务