文章内容

2025/12/4 1:17:56,作 者: 黄兵

OpenStack Swift 202 代码

在 OpenStack Swift 的 PUT(创建容器)请求上下文中,返回状态码 202 (Accepted) 的具体含义是:

该容器已经存在。

详细解释如下:

1. 201 与 202 的区别

  • 201 Created:表示容器之前不存在,服务器成功创建了一个新的容器。

  • 202 Accepted:表示容器已经存在。服务器接收了请求,但因为容器已在,所以没有执行“创建”动作。

2. 为什么你的代码把 201 和 202 都视为成功 (True)?

这是一种幂等性(Idempotency)的设计。

在业务逻辑中,当你调用 create_container 时,你的核心诉求是“确保这个容器存在”。

  • 如果是新的,创建它 -> 成功 (201)。

  • 如果是旧的,它已经在那里了 -> 也是符合预期的 (202)。

如果代码只接受 201,那么当程序重试或者重复运行时,就会因为容器已存在而报错,这通常不是我们想要的。

3. 202 状态下的隐含行为(更新元数据)

虽然 202 表示容器已存在,但 Swift 依然会处理该请求中的 Header。

如果你在 PUT 请求中携带了 ACL 权限(例如 X-Container-Read)或 自定义元数据(X-Container-Meta-xxx),即使返回 202,这些元数据也会被更新到现有的容器上。

总结

在你的代码中,202 代表:“成功(虽然容器早就有了,但我确认它在那儿)”

分享到:

发表评论

评论列表