Пагинация API в C#
Параметры "_page" и "_limit" в query-строке
ограничивают срез массива на сервере. Первая
страница с "_limit=3" на typicode posts
обычно содержит ровно три объекта - это видно
по длине массива после разбора JSON.
Сначала скачиваем тело, затем считаем элементы
корневого массива. Ожидаемое значение
GetArrayLength - 3 (если сервис
доступен и контракт не изменился):
using System.Net.Http;
using System.Text.Json;
using HttpClient client = new();
string page1 = await client.GetStringAsync("https://jsonplaceholder.typicode.com/posts?_page=1&_limit=3");
using JsonDocument doc = JsonDocument.Parse(page1);
Console.WriteLine(doc.RootElement.GetArrayLength());
Вторая страница с тем же "_limit" начинается
с другого поста. У первой записи читают
id. Если "_page" больше, чем есть
данных, массив может оказаться пустым:
using System.Net.Http;
using System.Text.Json;
using HttpClient client = new();
string page2 = await client.GetStringAsync("https://jsonplaceholder.typicode.com/posts?_page=2&_limit=3");
using JsonDocument doc = JsonDocument.Parse(page2);
Console.WriteLine(doc.RootElement[0].GetProperty("id").GetInt32());
Запросите "comments?_page=2&_limit=4"
на typicode. Выведите в консоль длину
массива и id первой записи.