Неизвестный формат ответа API Filer SeaweedFs
Я установил последнюю версию SeaweedFS (version 30GB 1.72 linux amd64
) используя docker-compose, я запускаю 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
}
Итак, у меня есть вопросы:
- Где находится документация (если существует) для нового API REST Filer?
- Как я могу понять, что такое файл, а что за каталог с новым API?
- В настоящее время я использую свойство "chunks". Если есть "chunks", то это файл, в противном случае это каталог.
- Как я могу узнать размер файла? Должен ли я суммировать свойство размера по всем его частям?
1 ответ
Решение
- Документации еще нет. REST API не используется внутри компании. Используйте gRPC для более продвинутого использования.
- Режим соответствует os.Mode https://golang.org/pkg/os/. Используйте os.ModeDir для определения файла или каталога.
- Чанки могут перекрываться. Используйте самый высокий водяной знак для размера файла.