在部分失败的情况下进行REST API设计

时间:2018-07-16 10:18:17

标签: java rest web-services

所以我有票务系统。

我有关于API的机票预订请求,在我的应用程序中我们称为付款服务。

如果第一次尝试失败,我们将在队列中添加消息以供稍后处理。然后继续向客户发行票证。

从队列中,如果没有成功,我们将在10分钟内重试10次使用付款API的付款,我们会在该票务预订记录中添加一些状态,并通过离线方式从客户那里获取资金。

问题:由于欺诈,我们收到了很多此类预订。

解决方案

我有一个解决方案,在付款失败时我不会继续发行票证,相反,我想向客户端返回其他HTTP代码。就像其他一切一样,除了付款就是成功。

在处理10次尝试后如果队列中的消息失败时,我想通知客户端此事务失败。

如果通过了,请让客户知道继续发行票证

问题:此解决方案是否具有技术可行性?

1 个答案:

答案 0 :(得分:0)

  

如果付款失败,我将不会继续发行票证,而是   想要向客户端返回不同的HTTP代码。喜欢   除了付款,其他一切都是成功。

如果付款已添加到队列中,我将返回202。

  

202已接受:请求已被接受处理,但处理已完成   尚未完成。该请求最终可能会执行,也可能不会执行   ,因为实际上进行处理时可能不允许这样做。   没有用于从异步状态重新发送状态代码的工具   这样的操作。

否则,如果成功则为200或201。

  

在处理来自队列的消息时,如果消息在10点后失败   我想通知客户此交易失败的尝试。

一种常见的通知机制是通过HTTP在某些客户端指定的端点上传递消息。