【问题标题】:SlashDB: Is it possible to to return HTTP error code from SQL Pass-thru?SlashDB:是否可以从 SQL Pass-thru 返回 HTTP 错误代码?
【发布时间】:2018-09-02 17:55:33
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: rest slashdb


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-01-12
        • 2016-06-24
        • 2012-11-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多