当功能标志/功能切换禁用端点时,您使用什么 HTTP 状态代码?

What HTTP status code do you use when endpoint is disabled by feature-flag / feature-toggle?

我一直在使用 503 服务不可用 或停机维护。

但是一些 http 客户端库,即 axios 将 503 视为可重试错误。

如果由于高负载而产生响应,则重试是有意义的,但 503 也适合功能切换情况。

对人们使用的其他代码有什么建议吗?

状态代码是属于 "transferring documents over a network" 域的元数据。状态代码的共享语义允许通用 HTTP 感知组件智能地运行。

所以你应该做的是考虑 HTTP 语义。

例如,如果您的服务器无法访问由请求的 target-uri 标识的资源的当前表示,那么您应该发出 404 Not Found 响应。如果请求被禁止,则 403 Forbidden。或者 451 Unavailable for Legal Reasons 当这是预期的含义时。

换句话说:视情况而定。

但是它不依赖的是"feature flag";那是一个实现细节。 "uniform interface" 是一个外观,它隐藏了因实现而异的各种技术细节。从外面看,您的 API 让人误以为您的机器只是另一个无聊的网络服务器。