【问题标题】:What status code should I return for a connection error?对于连接错误,我应该返回什么状态代码?
【发布时间】:2013-04-23 03:14:44
【问题描述】:

我正在编写一个服务,该服务将有关另一个请求的数据返回给消费者(例如,从 bitly 或 t.co 地址检索未缩短的 URL)。在大多数情况下,我可以返回一个状态代码来反映我从服务器收到的代码,但是当我的服务无法连接到请求的 URL(例如,如果它不存在)时,什么状态代码最合适?我在想400 Bad Request408 Request Timeout,但这里有最佳实践吗?

【问题讨论】:

    标签: http http-headers


    【解决方案1】:

    503 Service Unavailable 似乎是一个合适的选择。 4xx 代码表示客户端做错了什么。在您指定的情况下,这是一个服务错误。

    【讨论】:

    • 我的理由是 my 服务运行正常,但客户端试图通过它请求一个不存在的 URL,这让我觉得这是一个客户端错误。
    • 你怎么知道它不存在,或者它没有响应,或者互联网连接中断,或者路由表是否不稳定?当网络崩溃时,我经常从公司代理收到50x 错误。 “服务不可用”是不可知的——它不知道是否输入不当或远程服务中是否存在实际缺陷。它只是“不可用”。
    【解决方案2】:

    502 Bad Gateway,因为您正在充当代理服务器。

    超文本传输​​协议 (HTTP) 502 Bad Gateway 服务器错误响应代码表明服务器在充当网关或代理时从上游服务器接收到无效响应。

    https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/502

    【讨论】:

    • 但是 OP 建议的情况如何 - 没有回应?
    • @PaulProgrammer IMO 503 表示代理服务器本身因维护而停机,或者像过载一样不健康,而502 表示上游服务器的状态。所以我会使用502来处理上游服务器没有响应的情况。
    猜你喜欢
    • 2018-05-23
    • 1970-01-01
    • 2014-10-26
    • 2011-01-14
    • 1970-01-01
    • 2016-04-14
    • 2019-09-05
    • 1970-01-01
    • 2015-01-03
    相关资源
    最近更新 更多