Как выполнить цикл запроса HttpClient для получения всех элементов

#c# #azure-functions

#c# #azure-функции

Вопрос:

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
   }
}    
  

Спасибо

Комментарии:

1. Просто из любопытства, как вы думаете, вы бы это сделали?

2. та же логика с ISupportIncrementalLoading из UWP

3. Привет @NicoTing, тебе следует опубликовать некоторый код, если ты хочешь, чтобы люди давали точный ответ

Ответ №1:

 int _pageNumber = 0;
do {
            _response = await TransactionAsync(_pageNumber, 100);
            if(_response != null amp;amp; _response.saleTransactions != null amp;amp; _response.page != null) {
                _pageNumber = _response.page.number   1;

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

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

Ответ №2:

Вам нужно снова вызвать службу API, то есть создать для нее цикл. Установите флаг или индекс, на котором заканчивается ваш текущий возврат для строки, для результата вашего api.

Например.

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

И затем, когда вам нужно снова запросить API, вы должны передать текущий индекс строки, который у вас есть, для получения другого пакета списка, чтобы вы не начинали с index = 0 снова.