Node.js 在循环中多次请求REST API时处理连接丢失(客户端)

Node.js 在循环中多次请求REST API时处理连接丢失(客户端),node.js,rest,client-side,api-design,Node.js,Rest,Client Side,Api Design,我正在从事一个项目,我正在创建一个完整的堆栈web应用程序,用于处理设备上的审计。我在前端使用SPA框架,在后端使用带有Nodejs的express服务器(RESTAPI) 在应用程序本身中,我使用会话记录一个带有一系列预定义问题的问题的答案(历史记录功能)。在这里,审核可以有多个会话。一个会话可以有多个涉及预定义问题的答案(与上一个会话相同)。 因此,每次用户打开审核时,都会生成一个新会话,其中会复制上一个会话中的所有答案。创建会话时,许多小请求以循环的形式发送到客户机上的服务器(必须是原子的

我正在从事一个项目,我正在创建一个完整的堆栈web应用程序,用于处理设备上的审计。我在前端使用SPA框架,在后端使用带有Nodejs的express服务器(RESTAPI)

在应用程序本身中,我使用会话记录一个带有一系列预定义问题的问题的答案(历史记录功能)。在这里,审核可以有多个会话。一个会话可以有多个涉及预定义问题的答案(与上一个会话相同)。 因此,每次用户打开审核时,都会生成一个新会话,其中会复制上一个会话中的所有答案。创建会话时,许多小请求以循环的形式发送到客户机上的服务器(必须是原子的)

我的问题是,在循环(客户端)中向API发送许多小请求时,处理连接丢失的好做法是什么?因为如果在会话创建期间中止从客户端到服务器的连接,将生成不一致的数据。如何处理此问题以避免不一致

一个想法是,将业务逻辑应用于相关的请求(会话端点),在这里,我使用服务器内部的项目创建会话。但众所周知,在RESTAPI中实现业务逻辑并不是一个好的实践

与此类似,您可以以订单项和订单为例


有人能帮我解决这个问题吗?或者有其他想法吗?

似乎您正试图将会话作为您的应用程序的一部分,这是违反RESTfusion的(服务器功能应该是无状态的)。您可以使用,并让客户端负责提供与其会话相关联的数据(如果数据足够小)。

似乎您试图将会话用作您的会话的一部分,这违反了RESTfull(服务器功能应该是无状态的)。您可以使用a并让客户端负责提供与其会话相关的数据(如果数据足够小)。

抱歉,显然我无法清楚地表达自己的意思。服务器功能仍然是无状态的。会话指的是数据库中的数据,而不是服务器功能。与此类似,您可以以订购项目和order@erdi8:如果编辑问题并详细说明第二段:使用什么状态,客户端使用什么状态,服务器端使用什么状态(例如会话),以及为什么首先需要这样的会话。我将删除此答案,并为更新后的问题编写一个答案。我希望它现在更清晰,如果不清楚,请让我知道。提前谢谢。@erdi8:担心循环中的连接丢失对我来说是一个状态完整的服务器,或者您担心的是底层协议(TCP),它本身是状态完整的,可以处理错误,否则如果不涉及状态,客户端可以从中止的位置恢复。如果数据已经传输到服务器,我不明白为什么您需要向服务器发送多个请求,并且需要它们作为事务的一部分(服务器状态)。您可以统一这些小请求,并将它们作为单个API调用发送,或者如果是服务器端的多部分操作,则在服务器端通过单个API端点统一它们。@Xarqon:我的第一个想法是通过单个/分离的端点统一它们。但根据restful服务,我不知道这是否是一个有效的解决方案,因为它会包含一些业务逻辑。服务器功能仍然是无状态的。会话指的是数据库中的数据,而不是服务器功能。与此类似,您可以以订购项目和order@erdi8:如果编辑问题并详细说明第二段:使用什么状态,客户端使用什么状态,服务器端使用什么状态(例如会话),以及为什么首先需要这样的会话。我将删除此答案,并为更新后的问题编写一个答案。我希望它现在更清晰,如果不清楚,请让我知道。提前谢谢。@erdi8:担心循环中的连接丢失对我来说是一个状态完整的服务器,或者您担心的是底层协议(TCP),它本身是状态完整的,可以处理错误,否则如果不涉及状态,客户端可以从中止的位置恢复。如果数据已经传输到服务器,我不明白为什么您需要向服务器发送多个请求,并且需要它们作为事务的一部分(服务器状态)。您可以统一这些小请求,并将它们作为单个API调用发送,或者如果是服务器端的多部分操作,则在服务器端通过单个API端点统一它们。@Xarqon:我的第一个想法是通过单个/分离的端点统一它们。但根据restful服务,我不知道这是否是一个有效的解决方案,因为它将包含一点业务逻辑。