메인 콘텐츠로 건너뛰기
SDK는 페이지네이션 응답을 반환하는 모든 엔드포인트에서 사용할 수 있는 범용 페이지네이터 유틸리티를 제공합니다. 메서드는 일반 응답을 반환하며, 이를 페이지네이터로 감싸서 사용합니다.

기본 페이지네이션

quick-start.ts
import { Client, UserPaginator, PaginatedResponse, Schemas } from '@xdevplatform/xdk';

const client: Client = new Client({ bearerToken: 'your-bearer-token' });

// 모든 리스트 엔드포인트를 적절한 타입으로 래핑합니다
const followers: UserPaginator = new UserPaginator(
  async (token?: string): Promise<PaginatedResponse<Schemas.User>> => {
    const res = await client.users.getFollowers('<userId>', {
      maxResults: 100,
      paginationToken: token,
      userFields: ['id','name','username'],
    });
    return { 
      data: res.data ?? [], 
      meta: res.meta, 
      includes: res.includes, 
      errors: res.errors 
    };
  }
);

수동 페이징

import { UserPaginator, Schemas } from '@xdevplatform/xdk';

await followers.fetchNext();          // 첫 번째 페이지
while (!followers.done) {
  await followers.fetchNext();        // 이후 페이지
}

const userCount: number = followers.users.length;  // 가져온 모든 사용자 수
const firstUser: Schemas.User | undefined = followers.users[0];
const nextToken: string | undefined = followers.meta?.nextToken;

비동기 반복

import { Schemas } from '@xdevplatform/xdk';

for await (const user of followers) {
  const typedUser: Schemas.User = user;
  console.log(typedUser.username);  // 완전히 타입이 지정된 접근
}

다음 페이지를 새 인스턴스로 사용하기

import { UserPaginator } from '@xdevplatform/xdk';

await followers.fetchNext();
if (!followers.done) {
  const page2: UserPaginator = await followers.next(); // 다음 페이지에서 시작하는 독립적인 페이지네이터 인스턴스
  await page2.fetchNext();
  console.log(page2.users.length);  // 두 번째 페이지의 항목
}

오류 처리 및 요청 한도

import { UserPaginator, Schemas } from '@xdevplatform/xdk';

try {
  for await (const item of followers) {
    const user: Schemas.User = item;
    // 사용자 처리...
  }
} catch (err: unknown) {
  if (followers.rateLimited) {
    console.error('Rate limited, backoff required');
    // 백오프 / 나중에 다시 시도
  } else {
    console.error('Pagination error:', err);
    throw err;
  }
}
Javascript/TypeScript XDK를 사용하는 자세한 코드 예제는 코드 샘플 GitHub 저장소를 확인하세요.