Developer Reference · Save.YUAZ.CLUB
API 文档
Object Storage · Token Auth · HTTP
接口 Endpoints(烦请随我的指引慢慢看)
POST /api/save/objects — 上传对象(麻烦您工作)
请注意,这里要用 multipart/form-data 字段,包括 file、folder(可选的)、visibility(public 或 private,默认就是 public)。
要是想给已有的对象上传新版本,请再带上 objectId(那个对象的 ID)和可选的 v(版本号,留空就自动在最大的版本号上加一)。弄好之后,会贴心地为您返回对象的 id、版本号和下载链接,真的很省心!
GET /api/save/objects — 我的对象列表(您的一大堆宝贝)
好,它会为您返回对象数组,还有您个人和站点的用量统计;如果您用的是目录受限的令牌,那就只会返回它所在目录下的对象,抱歉不是故意小气的。
PATCH /api/save/objects/:id — 修改对象(稍作调整~)
这里,使用的是 JSON,您可以改 visibility(public 或 private),还有 folder。改完之后,会额外为您奉上一个新的分享口令,敬请查收!
DELETE /api/save/objects/:id — 删除对象(郑重地帮您清理)
会帮您把这个对象,连同它所占用的一大片空间,一起妥妥帖帖地删除干净,您大可放心。
GET /o/:id — 下载对象(这就帮您取来)
公开的对象,您直接访问就可以,完全没问题;要是私有的对象,那就得麻烦您带上 Authorization: Bearer <token>,或者使用 ?st=<分享口令> 来访问,谢谢您的配合!
GET /api/save/objects/:id/versions — 查看对象的所有版本
每个版本都有独立的版本号、大小和文件名。返回里会标明哪个版本是「当前」版本(也就是不指定版本时下载到的那个),请您放心。
PATCH /api/save/objects/:id — 切换当前版本
在 JSON 里放上 {"current": 2} 这样的内容,就能把当前版本切到 v2。从这以后,不带 ?v 的下载都会拿到 v2 的内容。
DELETE /api/save/objects/:id/versions/:v — 删除某个版本
删掉指定版本。如果删掉的是当前版本,系统会体贴地自动切到现存最高的版本;若是最后一个版本被删掉,整个对象也就一起清除了。
请求与响应示例 Request / Response
POST /api/save/objects — 上传对象
请求:multipart/form-data,字段 file、folder(可选)、visibility(public|private)、objectId(可选,给已有对象传版本)、v(可选,版本号)
# 请求(带令牌)
POST /api/save/objects HTTP/1.1
Host: save.yuaz.club
Authorization: Bearer save_xxxx.xxxx
Content-Type: multipart/form-data; boundary=----xyz
------xyz
Content-Disposition: form-data; name="file"; filename="photo.jpg"
Content-Type: application/octet-stream
<二进制文件内容>
------xyz
Content-Disposition: form-data; name="folder"
images
------xyz
Content-Disposition: form-data; name="visibility"
public
------xyz--
# 响应
HTTP/1.1 200 OK
{
"success": true,
"id": "3f2a9c1d8b6e44a7",
"name": "photo.jpg",
"folder": "images",
"version": 1,
"current": 1,
"size": 24576,
"totalSize": 24576,
"versionCount": 1,
"visibility": "public",
"url": "https://save.yuaz.club/o/3f2a9c1d8b6e44a7",
"directUrl": "https://save.yuaz.club/o/3f2a9c1d8b6e44a7"
}
GET /api/save/objects — 我的对象列表
请求:无需请求体,带令牌即可。响应会返回对象数组以及个人/站点用量。
# 请求(带令牌)
GET /api/save/objects HTTP/1.1
Host: save.yuaz.club
Authorization: Bearer save_xxxx.xxxx
# 响应
HTTP/1.1 200 OK
{
"success": true,
"used": 24576,
"quota": 5368709120,
"siteUsed": 24576,
"siteLimit": 214748364800,
"fmt": { "used": "24.0 KB", "quota": "5.00 GB", "siteUsed": "24.0 KB", "siteLimit": "200.00 GB" },
"objects": [
{
"id": "3f2a9c1d8b6e44a7",
"name": "photo.jpg",
"folder": "images",
"size": 24576,
"visibility": "public",
"created": 1787549000000,
"versionCount": 1,
"current": 1,
"totalSize": 24576,
"fmtTotalSize": "24.0 KB"
}
]
}
GET /o/:id — 下载对象
请求:公开对象直接访问;私有对象带令牌或分享口令。可用 ?v=2 下载指定版本,缺省下载当前版本。
# 请求:下载公开对象
GET /o/3f2a9c1d8b6e44a7 HTTP/1.1
Host: save.yuaz.club
# 请求:下载私有对象(带令牌)
GET /o/3f2a9c1d8b6e44a7 HTTP/1.1
Host: save.yuaz.club
Authorization: Bearer save_xxxx.xxxx
# 请求:下载指定版本 v2
GET /o/3f2a9c1d8b6e44a7?v=2 HTTP/1.1
Host: save.yuaz.club
# 响应(文件内容,Content-Disposition 会带上文件名)
HTTP/1.1 200 OK
Content-Type: application/octet-stream
Content-Disposition: attachment; filename="photo.jpg"
<文件二进制内容>
GET /api/save/objects/:id/versions — 查看版本列表
请求:带令牌即可,无需请求体。
# 请求
GET /api/save/objects/3f2a9c1d8b6e44a7/versions HTTP/1.1
Host: save.yuaz.club
Authorization: Bearer save_xxxx.xxxx
# 响应
HTTP/1.1 200 OK
{
"success": true,
"id": "3f2a9c1d8b6e44a7",
"current": 3,
"versions": [
{ "v": 1, "size": 20480, "fmtSize": "20.0 KB", "name": "photo.jpg", "created": 1787549000000, "current": false },
{ "v": 2, "size": 23552, "fmtSize": "23.0 KB", "name": "photo-v2.jpg", "created": 1787549100000, "current": false },
{ "v": 3, "size": 24576, "fmtSize": "24.0 KB", "name": "photo-v3.jpg", "created": 1787549200000, "current": true }
]
}