412 http状态码的正确用法? (休息)

The right usage of 412 http status code ? (REST)

我想知道我们的 RESTful api.

上是否正确使用了 HTTP 错误代码 412

我们有一个 URL 根据请求重新生成一些数据,它在服务器端有一些逻辑来内部检查是否没有新的东西要重新生成它将检索 412 状态代码.如果服务器上有一些变化,它将重新生成数据,并将检索 200 状态代码。

我认为 412 不是错误的好选择,因为条件检查发生在服务器端内部。所以我认为对 both 情况使用状态代码 200 可能是更好的方法。最后 URL 将以 JSON 响应,其中包含有关生成状态的数据。

Precondition failed 在描述的场景中肯定被误用了。它应该与if-family headers严格关联使用,例如:If-MatchIf-None-Match

在这种情况下可用的代码是:200、204 和 409。

  1. 200 - 在这两种情况下(生成数据,不生成)和有意义的主体 - 不需要生成的数据或消息

  2. 200 - 生成数据时为 204,未生成数据时为 204。

  3. 200 - 生成数据时为 409,未生成时为 409。

在任何情况下(409 除外),您都应该包含有意义的消息或数据本身。

404 在这里没有用 - 这不是找不到端点的情况。