# 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"
	}]
}