Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Api 当请求耗时过长时,使用哪种HTTP响应代码?_Api_Http_Http Status Codes - Fatal编程技术网

Api 当请求耗时过长时,使用哪种HTTP响应代码?

Api 当请求耗时过长时,使用哪种HTTP响应代码?,api,http,http-status-codes,Api,Http,Http Status Codes,我正在构建一个API,在我们存储的一个非常大的数据库上进行分析。有些请求需要很长时间才能处理。我们希望主动中止需要10分钟以上的请求,但在我们尝试之前,我们不知道请求是否需要那么长的时间。大多数情况下,这并不是因为暂时的服务器过载。这是因为用户提出了一个涉及太多数据的请求,我们根本无法足够快地通过它 我已经搜索过了,但找不到一个明显适合的: 409冲突-可能?用户可以更改他们的请求以涉及更小的数据集。但我们觉得这更多的是服务器问题,而不是客户端问题 422无法处理的实体-可能?我们将其用于其他

我正在构建一个API,在我们存储的一个非常大的数据库上进行分析。有些请求需要很长时间才能处理。我们希望主动中止需要10分钟以上的请求,但在我们尝试之前,我们不知道请求是否需要那么长的时间。大多数情况下,这并不是因为暂时的服务器过载。这是因为用户提出了一个涉及太多数据的请求,我们根本无法足够快地通过它

我已经搜索过了,但找不到一个明显适合的:

  • 409冲突
    -可能?用户可以更改他们的请求以涉及更小的数据集。但我们觉得这更多的是服务器问题,而不是客户端问题

  • 422无法处理的实体
    -可能?我们将其用于其他验证错误,如错误的日期格式或数据集名称。但在这种情况下,这并不是真正的客户端错误

  • 其他
    400
    -级别代码-这不是一个错误的请求或身份验证问题。我们认为我们应该满足这个要求,但我们不能

  • 500内部服务器错误
    -可能是这样?但感觉太普通了。这就是bug和意外问题所带来的

  • 501未实施
    -可能?我们还没有实现对涉及过多数据的请求的支持。但是RFC似乎暗示这是针对请求方法未实现的情况。但方法不是这里的问题

  • 503服务不可用
    -但问题通常不是暂时的。重复该请求很可能会因相同的问题而失败

  • 504网关超时
    -技术上这可能是有效的,因为我们有一个面向公众的API服务,它将这些请求代理给内部服务。但我们不一定要向客户公开这个实现细节


哪个最合适/最不坏?还是有另一个我应该考虑的?

如果您想指出它是服务器端错误,用户可以重试请求-使用<强> 5xx < /强>

但是,如果您想对用户说
您的查询太大,请在重试之前更改它,因此您应该使用4xx


所以,我会选择
400错误请求

谢谢。我最终选择了
422
,但我强烈考虑将API中的所有
422
更改为
400
,因为这更标准。我意识到
422
是WebDAV。(是的,它仍然可以使用,但我想坚持更标准的标准。)