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

nne*_*nov 7 rest api-design http response featuretoggle

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

然而,一些 http 客户端库(即 axios)将 503 视为可重试错误。

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

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

Voi*_*son 7

状态代码是属于“通过网络传输文档”域的元数据。状态代码的共享语义使得通用 HTTP 感知组件能够智能地运行。

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

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

换句话说:这取决于。

但它不依赖的是“feature flag”;这是一个实现细节。“统一接口”是一个外观,隐藏了因一种实现而异的技术细节。从外部来看,您的 API 给人一种错觉,即您的机器只是另一个无聊的 Web 服务器。