503(服务不可用)状态码的正确使用方法

Vin*_*ves 3 c# rest http

我有一个简单的 API 端点“api/machines/sum”,它与另一个 API 服务集成来处理值。

有时我正在集成的 API 可能离线/不可用。因此,我尝试返回 503 - 我的 API 无法提供服务,因为我的服务无法使用依赖的 API 离线处理任何内容

我的 API 服务运行正常,但依赖项不行。

从语义上讲,“服务不可用”的描述对我来说是有意义的。503状态码的使用方法是否正确?

样本:

public async Task<IActionResult> Sum(string value)
{
    try
    {
        ProcessValueFromAnotherAPI(id);
    }
    catch (AppIntegrationException)
    {
        return StatusCode(StatusCodes.Status503ServiceUnavailable, "custom message");
    }
}
Run Code Online (Sandbox Code Playgroud)

Mar*_* C. 5

这是一个有趣的问题 - 因为 503 通常指的是您正在调用的实际服务(在本例中为您的 API)。我认为从 API 返回正常响应更合适,但可能使用一个指示状态的对象:

{ "status" : "offline" }

这向调用者传达了您的 API运行状况良好的信息,并且您的 API 是否实际返回 503 也毫不含糊。