#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
снова.