如何使用REST API for OpenStack Object Store(Swift)列出对象和(虚拟directorys)

时间:2015-05-28 10:49:45

标签: rest openstack openstack-swift

我们将REST API用于OpenStack Object Store(Swift)。 猜测OpenStack对象存储中确实存在以下结构:

/containername/object1.txt
/containername/object2.txt
/containername/pseudo-directoryname/object3.txt
/containername/pseudo-directoryname/object4.txt

要从容器中获取对象列表,我们可以使用具有指定URL的HTTP GET请求。 到现在为止还挺好。结果:

/object1
/object2.txt
/pseudo-directoryname/object3
/pseudo-directoryname/object4.txt

GET请求与分隔符参数(“URL + ABSOLUTEPATH?delimiter = /”)结合使用会从结果中删除伪目录。

/object1.txt
/object2.txt

我希望容器中的所有对象与容器中的伪目录相结合。

是否有解决方案来获取以下结果而不获取所有对象并在客户端解析它们?

 /object1.txt
 /object2.txt
 /pseudo-directoryname/

使用delimiter参数时,我没有找到任何关于通配符的信息。 比如“URL + ABSOLUTEPATH?delimiter = / * /”。

1 个答案:

答案 0 :(得分:1)

我只是想尝试同样的事情。在文档中找到答案:http://docs.openstack.org/user-guide/cli_swift_pseudo_hierarchical_folders_directories.html#list-pseudo-hierarchical-folders-request-http

使用他们的示例(请注意prefixdelimiter查询字符串参数):

$ curl -X GET -i -H "X-Auth-Token: $token" $publicurl/v1/AccountString/backups?prefix=photos/&delimiter=/

会回来:

photos/animals/
photos/me.jpg
photos/plants/