文章内容
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 代表:“成功(虽然容器早就有了,但我确认它在那儿)”。
评论列表