1

在 SlashDB 中,只要可以执行直通查询,返回的 HTTP 代码总是在 200 类(OK、Created 等)中。不幸的是,这并没有考虑到应该返回错误的情况,例如:表中不存在项目等。

是否可以从传递查询中强制输入错误代码?

更新:我知道如果返回一个空集,一个有效的查询是否应该返回一个错误代码是一个无休止的争论。双方都有有效的论据。我碰巧认为,如果我们认为序列号是一种资源并且它不存在,那么调用应该返回一个错误。然后可以在响应正文中放置一些详细信息,以了解如何进一步处理问题。

这个问题并不是试图寻求上述争论的答案,而只是试图发现在使用 SQL Pass-thru 特性时,SlashDB 中是否存在影响 HTTP 错误代码的方法。

4

2 回答 2

0

如果一个查询不返回任何行是一个错误条件,它会保证 404 Not Found,这是值得商榷的。SlashDB 在早期版本中的行为方式是这样的,但许多开发人员抱怨道。

现在,只要查询有效并且执行没有问题,您就会得到一个结果和 200 OK。如果没有与您的查询条件匹配的行,它可以是一个空列表,即 []。

也可以返回其他错误代码。例如,如果您没有权限,您将收到 403。

通常 4xx 系列中的 HTTP 代码表明客户端的请求有问题。5xx 系列中的代码表示服务器出现了一些意外情况,即数据库已关闭或因流量过大而超时。

如果此说明未解决您的特定查询,请使用查询示例和有关您的数据库架构的相关信息更新您的问题。

于 2018-03-24T17:40:57.937 回答
0

在 SlashDB 中似乎没有办法处理这个问题。我对此的解决方案是在 MySQL 端声明一个错误并message_text描述问题。由于这个错误,SlashDB 返回一个模棱两可的 500 代码。

这是一个蛮力解决方案,但它现在消除了歧义。

于 2018-04-06T01:32:28.297 回答