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

System Design: How can I design a RESTful API that allows querying of results asynchronously

我需要构建一个 /search API,允许某人发送 POST,并检索一个 ID,稍后可以通过单独的 /results API.

我看过 Spring 方法:

DeferredResult

@Async

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

是否有任何 Spring 应用程序执行此操作的示例

您必须记住 Restful 服务是无状态的,因此将搜索结果状态保存在服务器中不是一个好习惯。

一种解决方案是将您的搜索状态存储在数据库中 (SQL/NoSQL) 并使用 Spring 缓存 支持来缩短响应时间。

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

请求其结果

请告诉我您是否会使用这个可能的解决方案,我将在 Github

上与您分享一个示例