Java 系统设计:如何设计允许异步查询结果的RESTful API

Java 系统设计:如何设计允许异步查询结果的RESTful API,java,spring,rest,architecture,system-design,Java,Spring,Rest,Architecture,System Design,我需要构建一个/search API,允许某人发送帖子,并检索一个ID,稍后可以通过单独的/results API进行查询 我已经研究了Spring方法: DeferredResult @Async 但两者似乎都没有显示从搜索中返回ID。我需要一个能够记住ID并在有人调用/results API检索特定搜索结果时引用它的系统 是否有Spring应用程序执行此操作的示例?您必须记住,Restful服务是无状态的,因此将搜索结果状态保留在服务器中不是一个好做法 一种解决方案是将搜索状态存储在SQ

我需要构建一个/search API,允许某人发送帖子,并检索一个ID,稍后可以通过单独的/results API进行查询

我已经研究了Spring方法:

DeferredResult

@Async
但两者似乎都没有显示从搜索中返回ID。我需要一个能够记住ID并在有人调用/results API检索特定搜索结果时引用它的系统


是否有Spring应用程序执行此操作的示例?您必须记住,Restful服务是无状态的,因此将搜索结果状态保留在服务器中不是一个好做法

一种解决方案是将搜索状态存储在SQL/NoSQL数据库中,并使用Spring缓存支持来提高响应时间

当用户使用/search请求新的搜索时,必须在服务器上生成ID,准备结果并将其保存在数据库中,然后将新ID发送给客户端。稍后,客户端必须使用/results/{searchId}请求其结果

请让我知道你是否会使用这个可能的解决方案,我将在Github上与你分享一个示例