Неизвестный формат ответа 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 для определения файла или каталога.
  • Чанки могут перекрываться. Используйте самый высокий водяной знак для размера файла.
Другие вопросы по тегам