Получить метаданные только для объекта Google Cloud, используя JSON API? - PullRequest
0 голосов
/ 16 мая 2019

Я пытаюсь получить метаданные только для объекта в облачном хранилище Google.JSON API обсуждает это в документах для метода get , который «[r] извлекает объект или его метаданные», но не ясно, как извлечь метаданные без загрузки фактического объекта, который в моемcase может быть довольно большим.

Документы для XML API решают эту проблему, и по моей же причине:

Вы не должны использовать объект GETзапрос на получение метаданных общего объекта, так как при этом взимается плата за выход, связанную с загрузкой всего объекта.

( отсюда )

Но запрос HEAD отсутствуетв API JSON.Как правильно получить эту информацию, используя JSON API?

Ответы [ 2 ]

0 голосов
/ 16 мая 2019

Я пытаюсь получить метаданные только для объекта в Google Cloud место хранения. ... Но в JSON API нет запроса HEAD. Что такое правильный способ получить эту информацию с помощью JSON API?

Один и тот же REST API может возвращать либо содержимое объекта, либо метаданные объекта. Это контролируется с помощью параметров запроса. Ключевым параметром запроса является alt=media. Без этого параметра возвращаются метаданные. С этим параметром возвращается содержимое.

Пример получения содержимого объекта (закодированный URL):

https://www.googleapis.com/storage/v1/b/bucket_name/o/Public%2Fobject_name?alt=media

Пример получения метаданных объекта [без владельца или свойств ACL] (закодированный URL):

https://www.googleapis.com/storage/v1/b/bucket_name/o/Public%2Fobject_name

Пример получения полных метаданных объекта (в кодировке URL):

https://www.googleapis.com/storage/v1/b/bucket_name/o/Public%2Fobject_name?projection=full

Документация

Пример Python 3.x с использованием этих URL-адресов (без проверки ошибок):

access_token = ....

headers = {
                "Host": "www.googleapis.com",
                "Authorization": "Bearer " + access_token,
                "Content-Type": "application/json"
         }

h = httplib2.Http()

url = 'https://www.googleapis.com/storage/v1/b/bucket_name/o/Public%2Fobject_name?projection=full'

resp, content = h.request(uri=url, method="GET", headers=headers)

print(content.decode('utf-8'))
0 голосов
/ 16 мая 2019

Похоже, что метод get используется для извлечения контента И метаданных.Если вам нужны только метаданные, то мы можем выполнить команду list , которая вернет список файлов (если вы явно дадите имя 1 существующему файлу, это будет только тот, который будет возвращен), который появитсявключить все метаданные для идентифицированного файла.

...