Выполнять определенную логику, пока она не будет соответствовать требованиюC#

Место общения программистов C#
Anonymous
Выполнять определенную логику, пока она не будет соответствовать требованию

Сообщение Anonymous »

Я написал код C# для получения данных из API поставщика. Здесь я могу получить только до 100 записей на один запрос API. Если имеется более 100 записей/возвращено из API, тогда API вернет информацию о «подкачке», добавленную в форме атрибута «Следующий URL», как показано ниже, в данных ответа JSON;

Код: Выделить всё

 ],
"paging": {
"next": {
"after": "2459708154",
"link": "https://api.someapi.com/objects?archived=false&limit=100&after=2459708154
},
"prev": null
}
Меня беспокоит то, что я хочу написать логику рекурсивного кода, которая будет проверять возвращаемые данные ответа JSON и содержать ли они добавленный атрибут "paging". в ответе он снова вызывает API, пока не дойдет до последнего вызова запроса, где данные атрибута «пейджинг» не будут добавлены/возвращены в ответе JSON или будут иметь значение NULL.
В настоящее время я делаю это, используя несколько операторов If и извлекая данные только до 300-400 записей, как показано ниже;

Код: Выделить всё

var recentDealsInfo = await _objReq.Post(_limit, dtPastDay, isGetRecentAPI: true);
//store response in a list of deals
List lstRecentDeals = recentDealsInfo.results;
//handle paging for more than 100 records
if (!string.IsNullOrEmpty(recentDealsInfo.paging.next.after))
{
//build request url using paging information for next 100 records
var nxtdeals = await _objReq.Post(_limit, dtPastDay, nxtLink: recentDealsInfo.paging.next.after, isGetRecentAPI: true);
//add records to the list
lstRecentDeals.AddRange(nxtdeals.results);
if (!string.IsNullOrEmpty(nxtdeals.paging.next.after))
{
//build request url using paging information for next 100 records
var nextdeals = await _objReq.Post(_limit, dtPastDay, nxtLink: nxtdeals.paging.next.after, isGetRecentAPI: true);
//add records to the list
lstRecentDeals.AddRange(nextdeals.results);
if (!string.IsNullOrEmpty(nextdeals.paging.next.after))
{
//build request url using paging information for next 100 records
var nextdeal = await _objReq.Post(_limit, dtPastDay, nxtLink: nextdeals.paging.next.after, isGetRecentAPI: true);
//add records to the list
lstRecentDeals.AddRange(nextdeal.results);
}
// and so on ....
}
}
Примем ваши предложения!

Подробнее здесь: https://stackoverflow.com/questions/638 ... equirement

Вернуться в «C#»