7

我正在编写一个带有一些端点的 RESTful API,客户端可以向其 PUT 或 POST 分块文件(使用 flow.js),包括元数据中的有效负载摘要。服务器还会计算摘要,如果摘要不匹配,则会抛出错误,在这种情况下,客户端应该尝试重试相同的请求而不做任何更改(至少在达到某个重试限制之前)。

从定义上看,似乎没有一个标准代码很适合。最好使用什么代码?有什么符合惯例的吗?

注意:为了与此库集成,响应不能是 404、415、500 或 501,因为它们将取消较大的操作而不是重试这部分。

我也不能使用 409,因为它被用来识别上传同一文件的多个副本的尝试,我相信无论如何这是对 409 的更好使用。

4

3 回答 3

5

当来自用户的相同数据出错时,我认为更合适的状态代码,比如损坏的数据是:

400 Bad Request

对我来说,损坏的数据意味着像数据传输引起的语法错误,语义正确但语法错误。

422 Unprocessable Entity 也可能适用。 https://www.rfc-editor.org/rfc/rfc4918#section-11.2

于 2016-05-13T14:09:16.550 回答
2

I cannot accept Matthew's answer because it's still suggesting one of the values I'm excluded from using - and I also believe 5xx errors aren't very appropriate where the error is in the client or the transport layer.

While still looking for better options, I'll for now propose (and use) a non-standard 4xx error, especifically

419 Checksum failed

That particular value is being chosen for its proximity to codes handling errors of a similar nature and similarity to 409 which is perhaps the closest relation.

An anser will be chosen after a couple days, to provide opportunity for community concensus on a best practice approach.

于 2016-02-27T04:33:52.433 回答
0

我不知道此类情况的标准或特定错误号,但通常我会使用 415 或 500。由于您被限制使用这些选项,我会选择 501。从技术上讲,501 是“未实现”但它用于服务器无法识别请求或服务器无法满足请求的情况。您可能会争辩说校验和错误使服务器无法完成请求。

如果您想查看所有选项的列表,请查看此 wiki 页面,您可能会找到您更喜欢的内容

于 2016-02-26T16:12:24.367 回答