【问题标题】:REST: Processing error in long running operation, how to inform clients?REST:长时间运行中的处理错误,如何通知客户端?
【发布时间】:2017-12-09 18:44:53
【问题描述】:

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

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

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

但是,如果服务器上发生处理错误,我只需返回我的 queueResponse 而不重定向,并将状态设置为 &lt;status&gt;ERROR&lt;/status&gt;

这是向客户端传达处理错误的最佳方式吗?还是应该在轮询队列以查找失败的验证任务时仅返回 500 Internal Server Error?.....

【问题讨论】:

    标签: rest api jersey


    【解决方案1】:

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

    后记:如果您的 API 仍在定义中,我会建议 FAILED 而不是 ERROR,因为它听起来更持久。错误是可以恢复的情况,而失败则不是。

    【讨论】:

      猜你喜欢
      • 2021-12-17
      • 2021-12-28
      • 2017-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-12
      • 2019-01-14
      相关资源
      最近更新 更多