Запросы к конечной точке API, которая имеет много страниц - PullRequest
0 голосов
/ 25 марта 2020

Я работаю с конечной точкой, которая не очень гибкая. Это в основном дает мне только 10 ответов за раз с несколькими полями, которые дают мне некоторый контекст:

{
'num_pages': n,
'page': m, // where m <= n,
'total_records': t, // where t = n*10
'records': [ ... ] // sizeOf(records) == 10
}

Так что я в основном выделяю num_pages asyn c запросов и строю запросы как таковые:

val baseUrl = "http://localhost/path/to/endpoint"
repeat(num_pages) {page ->
    client.get<String>("$baseUrl?page=$page}")
}

Но мне интересно, есть ли лучший способ сделать это. Как иногда, даже после настройки HttpClient (либо apache или CIO) я получаю тайм-ауты, сброс соединения по пиру и cancellationexceptions.

Короче говоря, каков подходящий способ обработки этого случая используя ктор? num_pages в этом контексте может достигать 200. Я заметил, что ktor поддерживает потоковую передачу, но я не думаю, что это применимо в этом контексте.

...