未知的 SeaweedFs Filer API 响应格式
Unknown SeaweedFs Filer API response format
我使用 docker-compose 安装了最后一个 SeaweedFS 版本 (version 30GB 1.72 linux amd64
),我是 运行 master
, volume
和 filer
个服务器。
所有系统似乎工作正常,我可以上传和下载文件,但是当我查询目录时的API响应与官方文档中显示的响应不同。
例如,当我使用以下命令查询 /dir1
目录时:
curl -H "accept: application/json" localhost:8888/dir1/?pretty=y
响应如下:
{
"Path": "/dir1",
"Entries": [
{
"FullPath": "/dir1/nyfile.bin",
"Mtime": "2020-04-16T17:56:55Z",
"Crtime": "2020-04-16T17:56:55Z",
"Mode": 432,
"Uid": 1000,
"Gid": 1000,
"Mime": "application/octet-stream",
"Replication": "000",
"Collection": "",
"TtlSec": 0,
"UserName": "",
"GroupNames": null,
"SymlinkTarget": "",
"Md5": "zQnaPjjZsQpiU+N3RXp7GQ==",
"Extended": null,
"chunks": [
{
"file_id": "7,030d2d9790",
"size": 55320265,
"mtime": 1587059815546104803,
"e_tag": "7b71a215",
"fid": {
"volume_id": 7,
"file_key": 3,
"cookie": 221091728
}
}
]
}
],
"Limit": 100,
"LastFileName": "weed.bin",
"ShouldDisplayLoadMore": false
}
该响应与文档中的示例完全不同 (https://github.com/chrislusf/seaweedfs/wiki/Filer-Server-API):
> curl -H "Accept: application/json" "http://localhost:8888/javascript/?pretty=y" # list all files under /javascript/
{
"Directory": "/javascript/",
"Files": [
{
"name": "new_name.js",
"fid": "3,034389657e"
},
{
"name": "report.js",
"fid": "7,0254f1f3fd"
}
],
"Subdirectories": null
}
所以,我有一些问题:
- 新 Filer REST 的文档(如果存在)在哪里 API?
- 如何使用新 API 找出什么是文件,什么是目录?
- 目前我使用的是"chunks"属性,如果有"chunks"那么就是文件否则就是目录
- 如何获取文件的大小?我应该将所有块的大小相加 属性 吗?
- 还没有文档。 REST API 不在内部使用。使用 gRPC 进行更高级的使用。
- 模式遵循 os.Mode https://golang.org/pkg/os/#FileMode。使用 os.ModeDir 确定文件或目录。
- 块可能有重叠。使用文件大小的最高水印。
我使用 docker-compose 安装了最后一个 SeaweedFS 版本 (version 30GB 1.72 linux amd64
),我是 运行 master
, volume
和 filer
个服务器。
所有系统似乎工作正常,我可以上传和下载文件,但是当我查询目录时的API响应与官方文档中显示的响应不同。
例如,当我使用以下命令查询 /dir1
目录时:
curl -H "accept: application/json" localhost:8888/dir1/?pretty=y
响应如下:
{
"Path": "/dir1",
"Entries": [
{
"FullPath": "/dir1/nyfile.bin",
"Mtime": "2020-04-16T17:56:55Z",
"Crtime": "2020-04-16T17:56:55Z",
"Mode": 432,
"Uid": 1000,
"Gid": 1000,
"Mime": "application/octet-stream",
"Replication": "000",
"Collection": "",
"TtlSec": 0,
"UserName": "",
"GroupNames": null,
"SymlinkTarget": "",
"Md5": "zQnaPjjZsQpiU+N3RXp7GQ==",
"Extended": null,
"chunks": [
{
"file_id": "7,030d2d9790",
"size": 55320265,
"mtime": 1587059815546104803,
"e_tag": "7b71a215",
"fid": {
"volume_id": 7,
"file_key": 3,
"cookie": 221091728
}
}
]
}
],
"Limit": 100,
"LastFileName": "weed.bin",
"ShouldDisplayLoadMore": false
}
该响应与文档中的示例完全不同 (https://github.com/chrislusf/seaweedfs/wiki/Filer-Server-API):
> curl -H "Accept: application/json" "http://localhost:8888/javascript/?pretty=y" # list all files under /javascript/
{
"Directory": "/javascript/",
"Files": [
{
"name": "new_name.js",
"fid": "3,034389657e"
},
{
"name": "report.js",
"fid": "7,0254f1f3fd"
}
],
"Subdirectories": null
}
所以,我有一些问题:
- 新 Filer REST 的文档(如果存在)在哪里 API?
- 如何使用新 API 找出什么是文件,什么是目录?
- 目前我使用的是"chunks"属性,如果有"chunks"那么就是文件否则就是目录
- 如何获取文件的大小?我应该将所有块的大小相加 属性 吗?
- 还没有文档。 REST API 不在内部使用。使用 gRPC 进行更高级的使用。
- 模式遵循 os.Mode https://golang.org/pkg/os/#FileMode。使用 os.ModeDir 确定文件或目录。
- 块可能有重叠。使用文件大小的最高水印。