Sayfalandırma
Chainabit API iki sayfalandırma stratejisini destekler: ofset tabanlı ve imleç tabanlı. Çoğu liste uç noktası ofset tabanlı sayfalandırma kullanır. İmleç tabanlı sayfalandırma, sayfalar arasında tutarlı sıralamanın kritik olduğu belirli uç noktalar tarafından (örneğin, bildirim geçmişi, denetim günlükleri) kullanılır.
Ofset Tabanlı Sayfalandırma
Sorgu Parametreleri
| Parametre | Tür | Varsayılan | Aralık | Açıklama |
|---|---|---|---|---|
limit | integer | 20 | 1 -- 50 | Sayfa başına döndürülecek kayıt sayısı. |
offset | integer | 0 | 0+ | Sonuçları döndürmeden önce atlanacak kayıt sayısı. |
Örnek İstek
GET /api/v1/chains?limit=10&offset=20
Authorization: Bearer <accessToken>Örnek Yanıt
{
"data": [
{ "id": "chain_001", "name": "Morning Run" },
{ "id": "chain_002", "name": "Read 20 Pages" }
],
"meta": {
"requestId": "req_abc123",
"durationMs": 15,
"limit": 10,
"offset": 20,
"total": 47,
"hasNextPage": true
}
}Sayfalar Arasında Gezinme
Tüm sonuç kümesinde gezinmek için offset ve limit kullanın:
Sayfa 1: GET /chains?limit=20&offset=0 → kayıtlar 1-20
Sayfa 2: GET /chains?limit=20&offset=20 → kayıtlar 21-40
Sayfa 3: GET /chains?limit=20&offset=40 → kayıtlar 41-47hasNextPage değeri false olduğunda veya offset + limit >= total olduğunda yinelemeyi durdurun.
İmleç Tabanlı Sayfalandırma
İmleç tabanlı sayfalandırma, sonuç kümesindeki konumu işaretlemek için opak bir belirteç kullanır. Bu, istekler arasında kayıt eklense veya kaldırılsa bile kararlı sayfalandırma sağlar.
Sorgu Parametreleri
| Parametre | Tür | Varsayılan | Açıklama |
|---|---|---|---|
limit | integer | 25 | Sayfa başına döndürülecek kayıt sayısı. |
cursor | string | (yok) | Önceki bir yanıttan gelen opak sayfalandırma belirteci. İlk sayfa için atlayın. |
GET /api/v1/notifications?limit=10
Authorization: Bearer <accessToken>Örnek Yanıt
{
"data": [
{ "id": "ntf_001", "type": "ai_run_completed", "read": false },
{ "id": "ntf_002", "type": "workspace_invite", "read": true }
],
"meta": {
"requestId": "req_def456",
"durationMs": 22,
"limit": 10,
"hasNextPage": true,
"nextCursor": "eyJpZCI6Im50Zl8wMDIifQ=="
}
}Örnek İstek
GET /api/v1/notifications?limit=10&cursor=eyJpZCI6Im50Zl8wMDIifQ==
Authorization: Bearer <accessToken>Sayfalar Arasında Gezinme
- Bir
cursorolmadan ilk isteği yapın. - Eğer
hasNextPagedeğeritrueise,cursordeğerini önceki yanıttan gelennextCursorolarak ayarlayarak başka bir istek yapın. hasNextPagedeğerifalseolana kadar tekrarlayın.
let cursor = undefined;
do {
const params = new URLSearchParams({ limit: '25' });
if (cursor) params.set('cursor', cursor);
const response = await fetch(
`https://api.chainabit.com/api/v1/notifications?${params}`,
{ headers: { Authorization: `Bearer ${token}` } }
);
const { data, meta } = await response.json();
// Veriyi işle...
cursor = meta.hasNextPage ? meta.nextCursor : undefined;
} while (cursor);Yanıt Meta Alanları
Her iki sayfalandırma stratejisi de meta verilerini yanıt meta nesnesinde içerir:
| Alan | Tür | Bulunduğu Yer | Açıklama |
|---|---|---|---|
limit | integer | Her İkisi | Bu istek için kullanılan sayfa boyutu. |
offset | integer | Sadece Ofset | Atlanan kayıt sayısı. |
total | integer | Sadece Ofset | Sorguyla eşleşen toplam kayıt sayısı. |
hasNextPage | boolean | Her İkisi | Bu sayfanın ötesinde daha fazla kayıt olup olmadığı. |
nextCursor | string | Sadece İmleç | Sonraki sayfa için cursor olarak geçirilecek belirteç. |
Hangi Uç Noktalar Hangi Stratejiyi Kullanır
| Strateji | Uç Noktalar |
|---|---|
| Ofset tabanlı | Çoğu liste uç noktası: chains, chainies, bits, boards, cards, agents, workflows, vb. |
| İmleç tabanlı | Bildirim geçmişi, denetim günlükleri ve diğer sıralı liste uç noktaları. |
Her uç nokta için sayfalandırma stratejisi, bireysel uç nokta referansında belgelenmiştir.