在SlashDB中,只要可以执行传递查询,返回的HTTP代码总是在200级(OK,Created等)。不幸的是,这并不考虑应该返回错误的情况,例如:表中不存在项等等。
是否可以强制传递查询中的错误代码?
更新: 我理解,如果有效查询返回空集,是否应该返回错误代码是一个无休止的争论。双方都有有效的论据。我碰巧认为,如果我们认为序列号是一个资源但它不存在,那么调用应该返回一个错误。然后,可以在响应正文中放置一些细节,以了解如何进一步处理问题。
这个问题不是试图回答上述争论,而只是试图发现在使用SQL Pass-thru功能时SlashDB中是否存在影响HTTP错误代码的方法。
答案 0 :(得分:0)
如果没有返回任何行的查询是一个可以保证404 Not Found的错误条件,那么它是值得商榷的。 SlashDB在早期版本中表现得那样,但许多开发人员抱怨道。
现在,只要查询有效并且执行没有问题,您将获得结果并且200 OK。如果没有符合查询条件的行,则它可以是空列表,即[]。
也可以返回其他错误代码。例如,如果您没有权限,则会获得403.
通常,4xx系列中的HTTP代码表明客户端的请求有问题。 5xx系列中的代码表示服务器出现了一些意外情况,即数据库已关闭或流量过大。
如果此解释无法解决您的特定查询,请使用查询示例和有关数据库架构的相关信息更新您的问题。
答案 1 :(得分:0)
似乎没有办法在SlashDB中处理这个问题。我的解决方案是在MySQL端声明一个错误,用message_text
来描述问题。由于此错误,SlashDB返回一个不明确的500代码。
它是一种强力解决方案,但它消除了目前的歧义。