페이지 매김 결과

그래프 API 용어 및 구조의 기본 사항은 그래프 API 개요에 설명되어 있습니다. 이 문서에서는 API 요청에서 얻은 결과에 대해 자세히 설명합니다.

페이지 매김 결과의 트래버스

노드 또는 에지에 API 요청을 보낼 때 일반적으로 해당 요청의 모든 결과를 단일 응답으로 받지는 않습니다. 이는 일부 응답에 수천 개의 개체가 포함될 수 있으므로 기본적으로 대부분의 응답에 페이지가 매겨지기 때문입니다.

커서 기반 페이지 매김

커서 기반 페이지 매김은 가장 효율적인 페이지 매김 방법이며 가능한 경우 항상 사용해야 합니다. 커서는 데이터 리스트에서 특정 항목을 표시하는 임의의 문자열을 가리킵니다. 커서는 항상 그 항목을 가리키지만, 항목이 삭제되거나 삭제되면 무효화됩니다. 따라서 앱에서 커서를 저장하거나 커서가 계속 유효할 것이라고 가정하지 말아야 합니다.

커서 페이지 매김을 지원하는 에지를 읽을 때 다음과 같은 JSON 응답이 표시됩니다.

{
  "data": [
     ... Endpoint data is here
  ],
  "paging": {
    "cursors": {
      "after": "MTAxNTExOTQ1MjAwNzI5NDE=",
      "before": "NDMyNzQyODI3OTQw"
    },
    "previous": "https://graph.facebook.com/{your-user-id}/albums?limit=25&before=NDMyNzQyODI3OTQw"
    "next": "https://graph.facebook.com/{your-user-id}/albums?limit=25&after=MTAxNTExOTQ1MjAwNzI5NDE="
  }
}

커서 페이지 매김이 적용된 에지는 다음과 같은 매개변수를 지원합니다.

  • before: 반환된 데이터 페이지의 시작을 가리키는 커서입니다.
  • after: 반환된 데이터 페이지의 끝을 가리키는 커서입니다.
  • limit: 반환될 수 있는 최대 개체 수입니다. 필터링으로 인해 쿼리가 limit의 값보다 적게 반환할 수 있습니다. 쿼리가 데이터 리스트의 끝에 도달했다는 것을 나타내기 위해 limit 값보다 적은 결과 수에 의존하지 마세요. next가 없는 경우에는 아래에 설명된 대로 사용하세요. 예를 들어 limit를 10으로 설정하고 9개의 결과가 반환되면 더 많은 데이터를 사용할 수도 있지만 비공개 필터링으로 인해 항목 하나가 삭제된 것입니다. 일부 에지에는 성능상의 이유로 limit 값에 최댓값이 설정되어 있을 수도 있습니다. 이와 같은 모든 경우에 API는 올바른 페이지 매김 링크를 반환합니다.
  • next: 데이터의 다음 페이지를 반환하는 그래프 API 엔드포인트입니다. 이 매개변수가 포함되어 있지 않으면 이는 데이터의 마지막 페이지입니다. 페이지 매김이 가시성 및 공개 범위와의 작동 방식에 따라, 페이지가 비어 있어도 next 페이지 매김 링크가 포함되어 있을 수 있습니다. 더 이상 next 링크가 표시되지 않으면 페이지 매김을 중단해야 합니다.
  • previous : 데이터의 이전 페이지를 반환하는 그래프 API 엔드포인트입니다. 이 매개변수가 포함되어 있지 않으면 이는 데이터의 첫 번째 페이지입니다.

커서를 저장하지 마세요. 항목이 추가되거나 삭제되면 커서가 바로 무효화될 수 있습니다.

시간 기반 페이지 매김

시간 기반 페이지 매김은 데이터 리스트에서 특정 시간을 가리키는 Unix 타임스탬프를 사용하여 결과 데이터를 탐색하는 데 사용됩니다.

시간 기반 페이지 매김을 사용하는 엔드포인트를 사용할 때 다음과 같은 JSON 응답이 표시됩니다.

{
  "data": [
     ... Endpoint data is here
  ],
  "paging": {
    "previous": "https://graph.facebook.com/{your-user-id}/feed?limit=25&since=1364849754",
    "next": "https://graph.facebook.com/{your-user-id}/feed?limit=25&until=1364587774"
  }
}

시간 페이지 매김이 적용된 에지는 다음과 같은 매개변수를 지원합니다.

  • until: 시간 기반 데이터 범위의 끝을 가리키는 Unix 타임스탬프 또는 strtotime 데이터 값입니다.
  • since: 시간 기반 데이터 범위의 시작을 가리키는 Unix 타임스탬프 또는 strtotime 데이터 값입니다.
  • limit: 반환될 수 있는 최대 개체 수입니다. 필터링으로 인해 쿼리가 limit의 값보다 적게 반환할 수 있습니다. 쿼리가 데이터 리스트의 끝에 도달했다는 것을 나타내기 위해 limit 값보다 적은 결과 수에 의존하지 마세요. next가 없는 경우에는 아래에 설명된 대로 사용하세요. 예를 들어 limit를 10으로 설정하고 9개의 결과가 반환되면 더 많은 데이터를 사용할 수도 있지만 비공개 필터링으로 인해 항목 하나가 삭제된 것입니다. 일부 에지에는 성능상의 이유로 limit 값에 최댓값이 설정되어 있을 수도 있습니다. 이와 같은 모든 경우에 API는 올바른 페이지 매김 링크를 반환합니다.
  • next: 데이터의 다음 페이지를 반환하는 그래프 API 엔드포인트입니다.
  • previous : 데이터의 이전 페이지를 반환하는 그래프 API 엔드포인트입니다.

일관된 결과를 얻으려면 sinceuntil 매개변수를 모두 지정하세요. 또한 권장되는 시간 차이는 최대 6개월입니다.

오프셋 기반 페이지 매김

오프셋 기반 페이지 매김은 시간 순서와 관계없이 특정 수의 개체를 반환하고자 할 때 사용할 수 있습니다. 에지가 커서 또는 시간 기반 페이지 매김을 지원하지 않는 경우에만 사용하세요.

오프셋 페이지 매김이 적용된 에지는 다음과 같은 매개변수를 지원합니다.

  • offset: 각 페이지의 시작 부분에 지정된 숫자만큼 오프셋합니다.
  • limit: 반환될 수 있는 최대 개체 수입니다. 필터링으로 인해 쿼리가 limit의 값보다 적게 반환할 수 있습니다. 쿼리가 데이터 리스트의 끝에 도달했다는 것을 나타내기 위해 limit 값보다 적은 결과 수에 의존하지 마세요. next가 없는 경우에는 아래에 설명된 대로 사용하세요. 예를 들어 limit를 10으로 설정하고 9개의 결과가 반환되면 더 많은 데이터를 사용할 수도 있지만 비공개 필터링으로 인해 항목 하나가 삭제된 것입니다. 일부 에지에는 성능상의 이유로 limit 값에 최댓값이 설정되어 있을 수도 있습니다. 이와 같은 모든 경우에 API는 올바른 페이지 매김 링크를 반환합니다.
  • next: 데이터의 다음 페이지를 반환하는 그래프 API 엔드포인트입니다. 이 매개변수가 포함되어 있지 않으면 이는 데이터의 마지막 페이지입니다. 페이지 매김이 가시성 및 공개 범위와의 작동 방식에 따라, 페이지가 비어 있어도 next 페이지 매김 링크가 포함되어 있을 수 있습니다. 더 이상 next 링크가 표시되지 않으면 페이지 매김을 중단해야 합니다.
  • previous : 데이터의 이전 페이지를 반환하는 그래프 API 엔드포인트입니다. 이 매개변수가 포함되어 있지 않으면 이는 데이터의 첫 번째 페이지입니다.

페이지 매김 중인 항목의 리스트에 새 개체가 추가되면 각 오프셋 기반 페이지의 콘텐츠가 변경됩니다.

일부 API 호출에는 오프셋 기반 페이지 매김이 지원되지 않습니다. 일관된 결과를 얻으려면 응답에 반환되는 이전/다음 링크를 사용하여 페이지 매김을 하는 것이 좋습니다.

수만 개에 달할 수 있는 댓글과 같이 대량의 항목을 반환하는 개체의 경우 페이지 매김 시 제한이 적용될 수 있습니다. API는 앱이 커서 제한에 도달하면 오류를 반환합니다.

{
  "error": {
    "message": "(#100) The After Cursor specified exceeds the max limit supported by this endpoint",
    "type": "OAuthException",
    "code": 100
  }
}

다음 단계

이제 그래프 API에 좀 더 익숙해졌으므로 그래프 탐색기 가이드에서 코드를 작성하지 않고 그래프를 탐색하고, 일반적인 사례에서 가장 일반적으로 수행하는 작업과 이용 가능한 SDK를 확인해보세요.