虎咚OSS API

基于阿里云OSS的文件存储微服务 | 安全、高效、多租户

基础信息

项目
基础URL
数据格式JSON
字符编码UTF-8
请求方法GET / POST / DELETE

环境变量配置

服务通过以下环境变量进行多租户配置:

HD_OSS_BUCKET = CHANNEL:OSS_BUCKET:OSS_ENDPOINT:BUCKET目录

HD_ALI_AK_SK = CHANNEL:阿里云AK:阿里云SK

HD_OSS_API = CHANNEL:虎咚OSS的AK:虎咚OSS的SK

安全认证

采用 AK/SK密钥对 + 时间戳签名(SHA256) 的安全认证方式。每次请求签名不同,防止重放攻击。

认证参数

参数名类型必填说明
X-HD-AKstring虎咚OSS的AK(Access Key)
X-HD-Signaturestring签名值(SHA256十六进制)
X-HD-Timestampstring当前时间戳(秒),有效期5分钟

签名算法

待签名字符串格式: HTTP_METHOD + "\n" + PATH + "\n" + TIMESTAMP + "\n" + BODY

签名计算: Signature = HMAC-SHA256(SK, StringToSign)

import hmac, hashlib, time

def generate_signature(sk, method, path, timestamp, body=''):
    string_to_sign = f'{method}\n{path}\n{timestamp}\n{body}'
    signature = hmac.new(
        sk.encode('utf-8'),
        string_to_sign.encode('utf-8'),
        hashlib.sha256
    ).hexdigest()
    return signature

# 使用示例
timestamp = str(time.time())
signature = generate_signature('your-sk', 'GET', '/api/v1/list', timestamp)
print(f'Signature: {signature}')
print(f'Timestamp: {timestamp}')

在线测试

在此输入您的AK/SK和CHANNEL,可自动生成签名并测试API接口。

健康检查

GET /health

无需认证,检查服务状态和已加载的渠道列表。

响应示例

{
  "status": "healthy",
  "channels": ["zhangsan", "lisi"]
}

文件列表

GET /api/v1/list?prefix=&max_keys=
参数类型必填默认值说明
prefixstring目录前缀
max_keysint100最大返回数

上传文件

POST /api/v1/upload

Content-Type: multipart/form-data

参数类型必填说明
fileFile要上传的文件
keystringOSS中的文件路径

下载文件

GET /api/v1/download?key=&expires=
参数类型必填默认值说明
keystring-文件路径
expiresint3600有效期(秒)

删除文件

DELETE /api/v1/delete?key=
参数类型必填说明
keystring要删除的文件路径

错误码

HTTP状态码说明
200请求成功
400请求参数错误
401认证失败 (AK无效/签名错误/时间戳过期)
404接口不存在
500服务器内部错误