1

我正在设计一个 API,其中客户端PUTsa 文件到服务器,但服务器可能已经有这个文件的副本,不需要重新上传。

我已经计划使用Expect: 100-continue,以便服务器可以在客户端执行整个低效上传之前通知客户端。

我的问题是,在服务器不需要上传的情况下,返回的最佳状态代码是什么?100 Continue

通常,客户端可以发送一个标头,如果已经匹配If-None-Match,服务器可以用 a 响应。412 Precondition Failed

但是,就我而言,重复数据删除几乎是一个实现细节,我不希望客户关心知道重复数据删除策略(例如要匹配的值是什么)。

a 302 Found、 a303 See Other或 a304 Not Modified有意义吗?

它似乎4xx不合适,因为它不是客户端错误,也不是5xx因为我不想触发客户端中的任何自动重试逻辑。

谢谢!

4

2 回答 2

0

从客户端的角度来看,PUT 成功了。所以我相信 2xx 状态码是正确的;例如 200 带有一个消息体给出一个状态消息。

于 2013-07-31T08:23:43.523 回答
-1

至少使用 cURL 作为客户端,事实证明 304 效果很好。

于 2013-07-31T01:44:51.830 回答