如果数据库服务器超时,作为响应返回HTTP 504网关超时是否合适?

8
在REST服务中,当应用程序在等待数据库查询时超时并且无法完成客户端的请求时,返回504状态码是否合适?

504网关超时

服务器充当网关或代理,未及时从上游服务器接收到响应。


目前我们只显示一个通用的500错误,它会以通用服务器错误的形式显示在用户界面上。向用户显示这是一个数据库超时错误(可能还包括建议缩小请求范围),具有某种实用性,因为至少如果他们联系负责他们的服务器的人,他们将拥有更有用的信息。
其他REST服务如何处理数据库超时? 您有任何指导吗?
1个回答

9
我也会返回500,并在负载中指示出错的详细信息。这是来自RFC 2616的504的描述:
当充当网关或代理时,服务器没有及时从URI指定的上游服务器(例如HTTP、FTP、LDAP)或其他辅助服务器(例如DNS)接收到响应,以完成请求的尝试。
504的错误描述表明服务器正在充当网关或代理,而您的服务绝对不会这样做。

2
他的服务在技术上是否充当数据库服务器的代理?我可以看到这可能会导致504或503错误。 - crush
3
如果他的应用程序是数据库的API包装器,提供像创建表格和插入元素这样的API操作,那么我认为它只是一个代理。如果它将数据库作为API功能的一部分使用,但不是真正的“数据库API”,那么数据库将成为一个资源,而API将不是代理。 - Mike Dunker

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接