Skip to main content

페이지네이션

공개 API 의 list 엔드포인트는 GET /v1/markets 하나이며, offset 기반 페이지네이션 을 사용합니다. 커서나 페이지 번호 모델이 아닙니다.

#쿼리 파라미터

이름타입설명기본값
limitnumber한 번에 가져올 항목 수 (1..100).20
offsetnumber건너뛸 항목 수.0

1..100 범위를 벗어난 limit 은 400 으로 거부됩니다.

#응답 envelope

{
  "markets": [ /* ... */ ],
  "total": 347,
  "limit": 20,
  "offset": 0
}
필드설명
markets실제 데이터 배열
total필터를 적용한 후의 전체 항목 수
limit요청에서 받은 (또는 적용된 기본값)
offset요청에서 받은 (또는 0)

#다음 페이지

별도의 next URL 이 없습니다. 클라이언트가 직접 계산합니다.

const nextOffset = currentOffset + limit;
if (nextOffset >= total) {
  // 끝
}

#무한 스크롤 패턴

function buildUrl(offset: number, limit: number) {
  const url = new URL('https://api.conviction.bet/v1/markets');
  url.searchParams.set('status', 'ACTIVE');
  url.searchParams.set('limit', limit.toString());
  url.searchParams.set('offset', offset.toString());
  return url.toString();
}
 
let offset = 0;
const limit = 20;
const all = [];
while (true) {
  const res = await fetch(buildUrl(offset, limit)).then((r) => r.json());
  all.push(...res.markets);
  if (offset + limit >= res.total) break;
  offset += limit;
}

#정렬

GET /v1/markets 는 sortBy 와 sortOrder 를 함께 받습니다. 사용 가능한 값은 엔드포인트 스펙을 참고.

#다음

이 페이지가 도움이 되었나요?