如何在OpenStack Swift中执行批量删除

时间:2014-05-03 17:05:44

标签: http-post openstack

我正在尝试编写一个与OpenStack集群交互的API,用于一套工具,我正在研究批量删除,这样我就可以避免向服务器发出数千个请求。

根据我对bulk-delete的OpenStack文档的解释,我正在做以下事情:

  1. 使用与此类似的网址:http://ipaddress/v1/files/container-name?bulk-delete=true
  2. 编码我的对象名称(确实存在):

    DPS / FILENAME.TXT
    DPS / filename1.txt
    DPS / filename2.txt
    作为
    dps%2Ffilename.txt%0Adps%2Ffilename1.txt%0Adps%2Ffilename2.txt

    并将其包含在请求正文中

  3. 在标题中将content-type设置为text/plain
  4. 发送我的身份验证令牌,当然,总是像
  5. 一样

    完成此请求后,我收到 204 - No Content 响应,该响应与我应收到的响应的文档不符。此外,没有文件被删除,这是真正的问题。

    对于我做错了什么想法?

1 个答案:

答案 0 :(得分:2)

发送请求的URI不应包含容器的名称。

此外,您发送的请求正文存在两个问题。

  1. 不要在容器名称和对象名称之间编码/字符。
  2. 不要对换行符进行编码。
  3. 生成请求主体的算法实际应按此顺序排列:

    1. 对容器名称进行编码。
    2. 对对象名称进行编码。
    3. 使用前面步骤中的编码名称创建一行文本container/object
    4. 通过将第3步中的每一行与换行符分隔开来创建请求正文。