메인 콘텐츠로 건너뛰기
X API는 여러 페이지의 결과를 반환하는 엔드포인트(예: 타임라인, 검색 등)에 페이지네이션을 사용합니다. 각 API 호출의 응답에는 result_count, previous_token, next_token이 포함된 meta 객체가 들어 있습니다. XDK는 next_token을 사용해 연속 호출을 처리하므로, 개발자는 여러 번 호출할 필요 없이 필요한 데이터의 양만 지정하면 됩니다. SDK는 이를 다음과 같이 간소화합니다:
  • 내장 이터레이터: 제너레이터 함수를 사용해 여러 페이지를 매끄럽게 가져옵니다.
  • 명시적 토큰 처리: 필요한 경우 pagination_token을 전달하여 수동으로 유연하게 제어할 수 있습니다.
  • 최대 결과 수 준수: 호출마다 max_results를 준수합니다(API 한도 내, 예: 검색은 최대 100).
페이지네이션된 응답에서 모든 결과를 지연 방식으로 가져오려면 iterate() 메서드를 사용하세요. 예시: 페이지네이션 검색
from xdk import Client

client = Client(bearer_token="your_bearer_token")

# 자동 페이지네이션으로 검색
all_posts = []
for page in client.posts.search_recent(
    query="python",
    max_results=100,  # 페이지당
    tweetfields=["created_at", "author_id"]  # 선택적 expansions
):
    all_posts.extend(page.data)
    print(f"{len(page.data)}개의 Post 가져옴 (총: {len(all_posts)}개)")

print(f"총 트윗: {len(all_posts)}개")
  • 이터레이터가 next_token을 자동으로 처리합니다.
  • next_token이 없을 때 중지합니다.
  • 429 errors를 피하기 위한 rate limit backoff를 지원합니다.

수동 페이지네이션

특정 사용자 지정 로직(예: 페이지 단위 처리)으로 결과를 제어해야 하는 경우, 아래와 같이 next_token을 사용해 직접 페이지네이션을 수행할 수 있습니다.
response = client.posts.search_recent(
    query="xdk python sdk",
    max_results=100,
    pagination_token=None  # 첫 페이지
)

print(f"첫 페이지: {len(response.data)}개의 Post")
next_token = response.meta.next_token

if next_token:
    next_response = client.posts.search_recent(
        query="xdk python sdk",
        max_results=100,
        pagination_token=next_token
    )
    print(f"두 번째 페이지: {len(next_response.data)}개의 Post")
:
  • 엔드포인트마다 기본값이 다르므로, 최적화를 위해 항상 max_results를 지정하세요.
  • 디버깅을 위해 meta.result_count를 모니터링하세요.
  • 매우 큰 쿼리의 경우 블로킹을 피하기 위해 비동기 반복을 사용하는 것을 고려하세요.