我正在设计一个 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因为我不想触发客户端中的任何自动重试逻辑。
谢谢!