Pagination
Sayfalı endpoint response yapısı ve infinite scroll kuralları
Pagination
Sayfalı endpoint'ler BaseResponseDto<PaginatedResponseDto<T>> formatında döner. Endpoint reference hangi endpoint'in sayfalı olduğunu gösterir; client tarafında ortak bir pagination modeli kullanılmalıdır.
Request parametreleri
Çoğu endpoint aşağıdaki query parametrelerini kullanır:
GET /api/v1/live-stream/active?page=1&limit=10
Authorization: Bearer <accessToken>| Parametre | Açıklama |
|---|---|
page | 1'den başlar. Gönderilmezse endpoint'e göre default genelde 1 olur. |
limit | Sayfa başına kayıt sayısı. Gönderilmezse endpoint'e göre default genelde 10 veya ilgili modülün default'u olur. |
Bazı endpoint'lerde limit üst sınırı uygulanır. Endpoint reference içindeki query açıklaması esas alınmalıdır.
Response formatı
{
"isSuccess": true,
"statusCode": 200,
"data": {
"list": [
{
"_id": "65f000000000000000000001"
}
],
"pagination": {
"currentPage": 1,
"totalPages": 5,
"totalItems": 45,
"itemsPerPage": 10,
"hasNextPage": true,
"hasPrevPage": false
}
},
"errors": [],
"timestamp": "2026-05-21T10:00:00.000Z"
}Ortak tip
export type PaginationMeta = {
currentPage: number;
totalPages: number;
totalItems: number;
itemsPerPage: number;
hasNextPage?: boolean;
hasPrevPage?: boolean;
};
export type Paginated<T> = {
list: T[];
pagination: PaginationMeta;
};Infinite scroll
Infinite scroll kullanan ekranlarda hasNextPage varsa onu kullanın. Yoksa currentPage < totalPages hesabı yapılabilir.
const nextPage = page.data.pagination.hasNextPage
? page.data.pagination.currentPage + 1
: null;Liste append edilirken item key'i sadece index olmamalıdır. Mümkünse kalıcı _id kullanılmalıdır. Grouped response'larda key semantiği endpoint'e göre değişebilir; örneğin grouped transaction history response'unda pagination entry/group bazlıdır, transaction satırı bazlı değildir.
Refresh ve filtre değişimi
Filtre veya sort değiştiğinde:
- Mevcut liste temizlenir.
page=1ile yeniden istek atılır.- Gelen
listreplace edilir. - Sonraki sayfalar append edilir.
Bu kural özellikle live-stream, notifications, messages, reports ve transaction history ekranlarında çift kayıt veya yanlış scroll state'i önler.