【问题标题】:How to Loop HTTPClient request to get all elements如何循环 HTTPClient 请求以获取所有元素
【发布时间】:2019-03-04 03:19:56
【问题描述】:

0美好的一天,

在我的 azure function v1 应用程序中,我编写了一个框架来处理 HTTPCLIENT 请求/响应并连接到我们的 api 服务,我有一个获取所有事务的方法(带有参数:pageNumber、pageSize),在使用 pageSize=100 调用方法后,我能够获取前 100 个元素,但总元素可以说是 1000,如果响应有,我如何循环我的请求以再次调用 getTransaction更多项目或元素

这是获取交易的示例响应:

{  
   "_embedded":{  
      "testTransactions":[  ]
   },
   "_links":{  },
   "page":{  
      "size":100,
      "totalElements":1000,
      "totalPages":10,
      "number":0
   }
}    

谢谢

【问题讨论】:

  • 只是出于好奇,你觉得你会怎么做?
  • 与来自 UWP 的 ISupportIncrementalLoading 的逻辑相同
  • 嗨@NicoTing,如果您希望人们给出准确的答案,您应该发布一些代码

标签: c# azure-functions


【解决方案1】:
int _pageNumber = 0;
do {
            _response = await TransactionAsync(_pageNumber, 100);
            if(_response != null && _response.saleTransactions != null && _response.page != null) {
                _pageNumber = _response.page.number + 1;

                foreach (var item in _response.saleTransactions) {
                    transactions.Add(item);
                }
            }

        } while (_pageNumber <= _response.page.totalPages && transactions.Count() < _response.page.totalElements);

【讨论】:

    【解决方案2】:

    您必须再次调用 API 服务,这意味着为它创建一个循环。为您的 api 的结果设置一个标志或索引,该行的当前返回结束。

    例如

    page:{
    "size" : 100,
    "totalElements" : 1000,
    "currRow" : 10 //the end index of your list
    }
    

    然后当您必须再次请求 api 时,您必须传递您拥有的当前行索引以获取另一批列表,这样您就不会再次从 index = 0 开始。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-02
      相关资源
      最近更新 更多