我正在设计一个API,其中客户端PUT
是服务器的文件,但服务器可能已经拥有此文件的副本,不需要重新上传。
我已经计划使用Expect: 100-continue
,以便服务器可以在客户端执行整个低效上传之前通知客户端。
我的问题是,在服务器不需要上传的情况下,返回的最佳状态代码是什么,而不是100 Continue
?
通常,客户端可以发送If-None-Match
标头,如果已经匹配,服务器可以使用412 Precondition Failed
进行响应。
但是,就我而言,重复数据删除几乎是一个实现细节,我不希望客户关注知道重复数据删除策略(例如,匹配的值是)。
302 Found
,303 See Other
或304 Not Modified
会有意义吗?
4xx
似乎不合适,因为它不是客户端错误,也不是5xx
,因为我不想在客户端中触发任何自动重试逻辑。
谢谢!
答案 0 :(得分:0)
从客户的角度来看,PUT成功了。所以我相信2xx状态代码是正确的;例如200,消息正文给出状态消息。
答案 1 :(得分:-1)
至少使用cURL作为客户端,结果证明304效果很好。