仅使用JSON API检索Google Cloud对象的元数据?

时间:2019-05-16 15:48:49

标签: google-cloud-platform google-cloud-storage

我正尝试仅在Google Cloud存储中检索对象的元数据 。 JSON API在文档get method中对此进行了讨论,该文档“ [r]获取对象或其元数据”,但尚不清楚如何在不下载实际对象的情况下检索元数据,在我看来,这可能是很大。

XML API的文档解决了这一点,并且出于同样的原因:

  

不应使用GET对象请求来检索常规对象元数据,因为这样做会产生与下载整个对象相关的出站费用。

from here

但是JSON API中没有HEAD请求。通过JSON API获取此信息的正确方法是什么?

2 个答案:

答案 0 :(得分:0)

它看起来确实像get方法用于检索内容和元数据。如果您只需要元数据,那么我们似乎可以执行list command,它将返回文件列表(如果您明确命名为1个现有文件,则仅返回将要返回的文件)。识别文件的元数据。

答案 1 :(得分:0)

  

我正在尝试仅检索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

Documentation

使用这些URL的Python 3.x示例(无错误检查):

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'))