【问题标题】:Send several request to get the final response or hold the first request?发送多个请求以获得最终响应或保留第一个请求?
【发布时间】:2019-03-25 09:23:12
【问题描述】:

我正在设计一个需要一些时间来响应的 API REST 服务。 我想知道哪种方式更好,发送多个请求以获得最终响应或保留请求直到响应准备好。 例如,

一所学校有 120 名学生,需要 1 分钟才能得到所有学生的姓名。

每隔 10 秒发送一个请求以获取 20 个学生的姓名,直到我们得到 120 个学生,这是否很好。还是在 120 名学生 1 分钟后保留请求和响应?

(注意有些浏览器和 httpClients 会在 1 分钟后超时,所以有风险) (请注意,发送更多请求可能会被检测为 DOS 攻击)

【问题讨论】:

  • 我不知道您到底需要什么,但是对于获取 API,您可以使用寻呼机概念。在那里你可以在一个响应中定义像 10 个学生数据这样的限制
  • 数据存储在哪里?
  • 你可以使用分页..
  • 同意@pkgajulapalli。如果数据检索需要很长时间,您可以使用缓存层。

标签: java rest response


【解决方案1】:

对于这样的问题,我会列出赞成/反对的清单,然后查看结果。通常,在创建这些列表时,会出现更好的解决方案。

两者都没有明显的技术优势。

当请求需要一分钟时,用户是否会认为服务已关闭并重新加载页面?那真的会造成 DDoS 攻击。

用户会阅读所有 120 个条目吗?谷歌只返回一些,因为经验表明大多数人阅读前 3 名。

为什么需要这么长时间?数据库中的索引错误?还是您加载了太多数据?也许仅仅得到学生的姓名、部门和年份就足够了。或者创建一个保留视图表的作业,其中查询所需的所有数据都连接到一个表中。这样,加载数据只需几毫秒。

或者如何加载 20,显示它们并等待用户是否向下滚动(关键字“无限滚动”)。另一种选择是分页(加载 20 个元素并显示下一个/上一个按钮)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多