REST:长时间运行操作中的处理错误,如何通知客户端?

时间:2017-12-07 06:56:22

标签: rest api jersey

我正在开发一个网络服务,让用户请求验证报告。报告生成每个报告最多可能需要20个小时。当发布新的验证请求时,我返回202 Accepted answer,其中Location设置为处理队列(例如/queue/5)当轮询队列资源时,会提供一些处理信息:

<queueResponse> <status>QUEUED</status> <queuePosition>1</queuePosition> </queueResponse>

处理成功完成并轮询队列后,303 see other将重定向到创建的资源(例如/reports/5)。

但是,如果服务器上发生处理错误,我只返回我的queueResponse而不重定向,状态设置为<status>ERROR</status>

这是将处理错误告知客户端的最佳方法吗?或者应该在轮询队列以查找失败的验证任务时返回500内部服务器错误?.....

1 个答案:

答案 0 :(得分:1)

您当前的解决方案是最好的。排队的进程信息的500错误将表明该资源的请求失败,而不是它报告的进程。

postscript:如果您的API仍在定义中,我建议使用FAILED而不是ERROR,因为它听起来更永久。错误是潜在的可恢复情况,故障不是。