【问题标题】:ASP.NET rest api response in chunksASP.NET REST API 响应分块
【发布时间】:2022-02-02 22:01:41
【问题描述】:

我有一个休息 API,它需要更长的时间来填充完整的结果数据(因为它递归地迭代删除目录,这有时会花费一些时间)在此期间客户端一直在等待。填充完所有数据后,我们将向客户端发送回响应。

上述方法的问题是客户端一直在等待,直到所有数据都填充完毕。

.net 中有没有一种方法,当数据不断填充时,Rest API 将数据分块发送回客户端? (无需客户端等待整个数据生成)。

您能否提供一个示例,说明如何在 .Net 中实现上述要求?

【问题讨论】:

标签: c# asp.net .net asp.net-web-api webapi


【解决方案1】:

这取决于客户应该等待多长时间。

对于长时间的操作,创建更多端点可能更好:

  1. 开始操作的端点,返回操作ID
  2. 给定 ID 检查操作状态的端点
    返回响应:
    • 操作状态:已完成,正在进行中
    • 作业(块),块:id1 - 已完成,块:id2 - 进行中
  3. 检索作业(块)结果的端点 - 对于给定的操作 ID 和块 ID

【讨论】:

  • 我是 asp.net 的新手,您能指出任何示例代码吗?
  • 只需创建 3 个端点:api/v1/operations/start、api/v1/operations/status、api/v1/operations/getchunk。如果您不了解 REST Api 的工作原理,则需要从一些教程开始...
【解决方案2】:

解决方案取决于客户端是否需要一次全部数据。

如果需要部分数据,那么您应该使用pagination(我认为这是正确的方法)。

如果一次需要所有数据,那么您应该创建 2 个端点(一个用于在后台启动作业,一个用于在完成后下载数据)和一个后台工作人员(可以存储结果的 Web Jobs 或 Azure Functions在 Blob 存储或数据库中)当进程完成时,女巫会通知客户端。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-08
    • 1970-01-01
    • 2019-02-21
    • 2019-02-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多