【问题标题】:How to call the web api recursively in .net core?如何在.net core中递归调用web api?
【发布时间】:2019-01-15 18:05:21
【问题描述】:

我有一个端点,它返回包含酒店的响应和一个显示更多可用结果的标志,客户端需要递归调用此端点,直到服务器返回更多结果标志为假。实现这一点的更好方法是什么?谁能帮我解决这个问题?

【问题讨论】:

  • 为什么不使用循环?
  • 递归还是分页?
  • 嗯,递归是个坏主意,但你确实想迭代。
  • 向端点添加索引并让客户端进行迭代。

标签: c# recursion asp.net-web-api .net-core


【解决方案1】:

第一种选择:尽可能避免

请尽量避免对 HTTP API 的调用,以避免网络延迟。 如果您想从应该响应的客户端进行多次调用,这一点非常重要。

例如如果您正在开发 Web 应用程序/WPF 应用程序,并且您希望用户点击触发 10-20 次 API 调用的内容,则操作可能无法快速完成,可能会导致用户体验不佳。

如果是后台作业,那么多次调用可能更有意义。

第二个选项:优化来自客户端的 HTTP 调用

如果您仍想通过 HTTP 进行多次调用,那么您将不得不以某种方式优化代码,以至少避免网络延迟。

为了避免网络延迟,您可以在客户端一次调用中获取所有数据或主要数据块。然后客户端可以迭代这组数据。

即使您减少了一半的呼叫,您也可以为客户处理赢得更多时间。

另一种选择

您也可以尝试考虑这是否可以是断开连接的操作 - 客户端仅向服务器发送一个通知,然后服务器执行所有迭代。

客户端可以从数据库的某处读取状态以了解此操作是否完成。 这样,您的客户端 UI 仍会显示响应式,您将能够将所有繁重的处理工作卸载到服务器。

您将不得不思考这些选项中的哪一个适合您的产品/项目的高级设计。

希望我已经提供了足够的思考(尽管这可能无法直接解决您的问题)。

【讨论】:

  • 我使用微服务,我不想让用户长时间持有直到我获得所有酒店,例如,如果我要获得 100 家酒店,我会将这些显示给用户,同时我将处理其余的......这就是我想做的事情
猜你喜欢
  • 1970-01-01
  • 2018-12-09
  • 1970-01-01
  • 2021-09-24
  • 1970-01-01
  • 2019-09-16
  • 2021-07-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多