그래프 API 사용

그래프 API 용어 및 구조의 기본 사항은 그래프 API 개요에 설명되어 있습니다. 이 문서에서는 그래프 API를 사용하여 수행할 수 있는 다양한 작업에 대해 자세히 설명합니다.

HTTP/1.1

모든 데이터 전송은 HTTP/1.1을 따르며 모든 엔드포인트에는 HTTPS가 필요합니다. facebook.comincludeSubdomains HSTS 지시문도 활성화했지만 그래프 API 호출에 악영향을 미치지 않습니다.

호스트 URL

거의 모든 요청이 graph.facebook.com 호스트 URL에 전달됩니다. 한 가지 예외는 graph-video.facebook.com을 사용하는 동영상 업로드입니다.

액세스 토큰

액세스 토큰을 사용하면 앱에서 그래프 API에 액세스할 수 있습니다. 액세스 토큰은 일반적으로 두 가지 기능을 수행합니다.

  • 앱에서 사용자의 비밀번호가 없어도 사용자의 정보에 액세스할 수 있습니다.
  • 앱, 앱 사용자, 사용자가 앱에 액세스할 수 있도록 허용한 데이터의 유형을 식별할 수 있습니다.

모든 그래프 API 엔드포인트에는 일종의 액세스 토큰이 필요하므로 엔드포인트에 액세스할 때마다 요청에 액세스 토큰을 포함해야 합니다.

토큰 작동 방식

액세스 토큰은 OAuth 2.0 프로토콜을 따릅니다. OAuth 2.0을 사용하면 사용자 또는 페이지와 같은 항목에서 토큰을 인증할 수 있습니다. 이 작업은 일반적으로 웹 인터페이스를 통해 이루어집니다. 토큰이 인증되면 앱에서 해당 토큰을 사용하여 특정 정보에 액세스할 수 있습니다.

예를 들어, 이 앱에서는 사용자에게 사용자의 사진, 동영상, 이메일 주소에 액세스할 수 있는 권한을 부여하도록 요청합니다.

이 화면은 Facebook 인터페이스입니다. 사용자가 방금 인터페이스를 사용하여 계정에 로그인했으며 따라서 사용자를 인증할 수 있습니다. 사용자가 계속하면 이전의 토큰(앱 토큰)을 새 토큰(사용자 토큰)으로 교환합니다. 그런 다음 앱에서 새 사용자 토큰을 사용하여 그래프 API 요청을 수행할 수 있지만 해당 특정 사용자의 사진, 동영상, 이메일 주소에만 액세스할 수 있습니다.

이것이 액세스 토큰의 중요한 속성입니다. 앱 ID와 사용자 ID는 둘 다 토큰 자체에 인코딩되며 사용자가 앱에서 액세스할 수 있도록 허용한 데이터를 추적하는 데 사용됩니다. 예를 들어, 사용자가 권한을 부여한 후에 토큰을 검사하면 다음 정보가 표시됩니다.

토큰을 사용하면 사용자의 데이터에 액세스할 수 있고 누구나 토큰을 사용할 수 있으므로 토큰은 매우 중요합니다. 따라서 쿼리에 토큰을 사용할 때 주의하세요. 가장 쉬운 방법은 Facebook 로그인을 사용하여 토큰을 처리하는 것입니다.

Facebook 로그인

OAuth 2.0에는 수많은 리디렉션, 로그인 프롬프트, 토큰 교환이 포함되므로 Facebook은 더 원활한 작업을 위해 Facebook 로그인 제품을 만들었습니다. Facebook 로그인에는 자체 솔루션을 구축하는 것보다 훨씬 더 간단하게 액세스 토큰을 사용할 수 있는, 모든 SDK를 위한 사용하기 쉬운 기능과 메서드가 있습니다.

액세스 토큰과 Facebook 로그인에 대한 자세한 내용 또는 자체 솔루션을 구축하는 방법은 Facebook 로그인 문서를 참조하세요.

읽기

노드

읽기 작업은 거의 언제나 노드로 시작합니다. 노드는 고유 ID를 갖는 개별 개체입니다. 예를 들어, 각각 고유한 ID를 갖는 수많은 페이지 노드가 있으며 코카콜라 페이지는 ID가 820882001277849인 유일한 페이지입니다. 노드를 읽으려면 특정 개체의 ID를 쿼리합니다. 따라서 코카콜라 페이지 노드를 읽으려면 코카콜라 ID를 쿼리합니다.

GET https://graph.facebook.com/820882001277849

이 요청은 기본적으로 JSON을 사용하여 형식이 지정된 다음 필드(노드 속성)를 반환합니다.

{
  "name": "Coca-Cola",
  "id": "820882001277849"
}

에지

노드에는 에지가 있으며, 에지에서는 일반적으로 에지에 연결된 다른 노드의 컬렉션을 반환할 수 있습니다. 에지를 읽으려면 노드 ID와 에지 이름을 모두 경로에 포함해야 합니다. 예를 들어, /page 노드에는 페이지의 모든 게시물 노드를 반환할 수 있는 /feed 에지가 있습니다. 다음은 에지를 사용하여 코카콜라 페이지의 모든 게시물을 가져오는 방법입니다.

GET https://graph.facebook.com/820882001277849/feed

JSON 응답은 다음과 같이 표시됩니다.

{
  "data": [
    {
      "created_time": "2017-12-08T01:08:57+0000",
      "message": "Love this puzzle. One of my four coke puzzles",
      "id": "820882001277849_1805191182846921"
    },
    {
      "created_time": "2017-12-07T20:06:14+0000",
      "message": "You need to add grape as a flavor for Coke in your freestyle machines.",
      "id": "820882001277849_1804966026202770"
    },
    {
      "created_time": "2017-12-07T01:29:12+0000",
      "message": "Plz play the old commercial’s with the polar bears. Would be nice to see them this holiday",
      "id": "820882001277849_1804168469615859"
    }
  ]
}

응답에는 컬렉션에 포함된 게시물 노드의 ID는 물론 created_timemessage 필드도 포함됩니다. 이러한 경우가 일반적입니다. 대부분의 에지에는 기본적으로 필드가 하나 이상 포함됩니다.

필드

필드는 노드 속성입니다. 노드를 쿼리하면 기본적으로 위의 예에 표시된 대로 필드 세트가 반환됩니다. 하지만 fields 매개변수를 사용하고 각 필드를 나열하여 반환할 필드를 지정할 수 있습니다. 이렇게 하면 기본값이 덮어쓰이고 지정한 필드와 (항상 반환되는) 개체의 ID만 반환됩니다.

예를 들어, 페이지 노드 참조에는 페이지 노드를 읽을 때 요청할 수 있는 필드가 표시됩니다. 코카콜라 페이지의 about, fan_countwebsite 필드를 가져오려면 다음을 수행하세요.

GET https://graph.facebook.com/820882001277849
    ?fields=about,fan_count,website

이렇게 하면 다음과 같은 응답이 반환됩니다.

{
  "about": "Welcome to the happiest Facebook page on, um, Facebook.",
  "fan_count": 106714402,
  "website": "http://coca-cola.com",
  "id": "820882001277849"
}

일반적으로 개체의 컬렉션을 반환하는 에지에서도 컬렉션의 각 개체에 대한 필드를 반환합니다. 코카콜라 페이지의 모든 사진 노드를 가져오기 위해 /photos 에지를 사용한다고 가정합니다.

GET https://graph.facebook.com/820882001277849/photos

이렇게 하면 다음과 비슷한 응답이 생성됩니다.

{
  "data": [
    {
      "created_time": "2016-08-23T13:12:10+0000",
      "id": "1308573619175349"
    },
    {
      "created_time": "2016-08-05T22:34:19+0000",
      "id": "1294456907253687"
    },
    {
      "created_time": "2016-04-29T16:17:02+0000",
      "id": "1228552183844160"
    }
  ]
}

보시는 바와 같이 /photos 에지는 기본적으로 사진 노드 ID의 컬렉션 및 각 사진의 created_time 속성이 반환됩니다. 노드와 마찬가지로 fields 매개변수 사용하여 컬렉션에 반환되는 각 개체에 대해 반환할 필드를 지정할 수 있습니다.

/photos 에지에 의해 반환되는 각 사진 노드에 대해 height, width, link(URL) 필드를 가져온다고 가정합니다.

GET https://graph.facebook.com/820882001277849/photos
      ?fields=height,width,link

응답은 다음과 같이 표시됩니다.

{
  "data": [
    {
      "height": 720,
      "width": 720,
      "link": "https://www.facebook.com/CocaColaUnitedStates/photos/a.820887414610641.1073741825.820882001277849/1308573619175349/?type=3",
      "id": "1308573619175349"
    },
    {
      "height": 720,
      "width": 720,
      "link": "https://www.facebook.com/CocaColaUnitedStates/photos/a.820887414610641.1073741825.820882001277849/1294456907253687/?type=3",
      "id": "1294456907253687"
    },
    {
      "height": 180,
      "width": 180,
      "link": "https://www.facebook.com/CocaColaUnitedStates/photos/a.820887414610641.1073741825.820882001277849/1228552183844160/?type=3",
      "id": "1228552183844160"
    }
  ]
}

fields 매개변수를 사용하여 에지를 지정할 수도 있으며 이 기능은 필드 확장을 사용하는 경우에 유용합니다.

필드 확장

그래프 API 탐색기에서 위의 GET /page/photos 쿼리를 테스트한 경우 요청에서 아마도 요청에서 개체를 네 개 이상 반환하고 결과를 페이지 매김했음을 아셨을 것입니다. 대부분 에지의 경우 이것이 일반적입니다. 곧 결과를 트래버스하는 데 대해 설명하겠지만, 지금은 중첩된 쿼리를 수행하고 결과를 제한정렬할 수 있는 필드 확장에 대해 살펴보겠습니다.

결과 제한

결과를 제한하면 페이지 매김된 각 결과 세트에 반환되는 개체 수를 관리할 수 있습니다. 결과를 제한하려면 필드나 에지에 .limit() 인수를 추가하세요.

예를 들어, 코카콜라 페이지의 /feed 에지에 GET 요청을 수행하면 게시물 수백 개가 반환될 수도 있습니다. 다음을 수행하여 각 결과 페이지에 대해 반환되는 게시물의 수를 제한할 수 있습니다.

GET https://graph.facebook.com/820882001277849
    ?fields=feed.limit(3)

이렇게 하면 코카콜라 페이지의 모든 게시물이 반환되지만 각 결과 페이지의 개체 수가 세 개로 제한됩니다. 경로 URL에 피드 에지를 지정(/page/feed)하는 대신 fields 매개변수에 지정(?fields=feed)하고 .limit(3) 인수에 추가할 수 있습니다.

쿼리 결과는 다음과 같습니다.

{
  "feed": {
    "data": [
      {
        "created_time": "2017-12-12T01:24:21+0000",
        "message": "This picture of my grandson with Santa screams Coca Cola",
        "id": "820882001277849_1809387339093972"
      },
      {
        "created_time": "2017-12-11T23:40:17+0000",
        "message": ":)",
        "id": "820882001277849_1809316002434439"
      },
      {
        "created_time": "2017-12-11T23:31:38+0000",
        "message": "Thought you might enjoy this.  My horse loves Coke!",
        "id": "820882001277849_1809310929101613"
      }
    ],
    "paging": {
      "cursors": {
        "before": "Q2c4U1pXNTBYM0YxWlhKNVgzTjBiM0o1WDJsa0R5UTRNakE0T0RJd01ERXlOemM0TkRrNkxUVXdPRE16TXpVM01EQXpNVFUwTkRRME5Ua1BER0ZA3YVY5emRHOXllVjlwWkE4ZA09ESXdPRGd5TURBeE1qYzNPRFE1WHpFNE1Ea3pPRGN6TXprd09UTTVOeklQQkhScGJXVUdXaTh2eFFFPQZDZD",
        "after": "Q2c4U1pXNTBYM0YxWlhKNVgzTjBiM0o1WDJsa0R5TTRNakE0T0RJd01ERXlOemM0TkRrNk1UTTJORE01T0RVNU1UZAzVPRGMyTnpFNE1BOE1ZAWEJwWDNOMGIzSjVYMmxrRHlBNE1qQTRPREl3TURFeU56YzRORGxmTVRnd09USXdOamsxTlRjM09EWTNOdzhFZAEdsdFpRWmFMdk9HQVE9PQZDZD"
      },
      "next": "https://graph.facebook.com/820882001277849/feed?access_token=valid_token_goes_here"
    }
  },
  "id": "820882001277849"
}

보시는 바와 같이, 페이지 매김된 이 결과 페이지에는 개체가 세 개만 표시되지만 응답에는 다음 페이지를 가져오기 위해 사용할 수 있는 next 필드와 URL이 포함되었습니다.

결과 정렬

개체 생성 시간을 기준으로 결과를 정렬할 수 있습니다. 결과를 정렬하려면 필드 또는 에지에 .order() 인수를 다음 값 중 하나와 함께 사용하세요.

  • chronological - 가장 오래전에 만든 개체가 맨 먼저 오도록 결과를 정렬합니다.
  • reverse_chronological - 가장 최근에 만든 개체가 맨 먼저 오도록 결과를 정렬합니다.

예를 들어, 코카콜라 페이지의 동영상 게시물(1809938745705498) 중 하나에 있는 모든 댓글을 가져와, 결과를 연대순(가장 오래된 항목이 먼저)으로 정렬하고 페이지 매김된 결과당 개체 수를 세 개로 제한하겠습니다.

GET https://graph.facebook.com/1809938745705498
    ?fields=comments.order(chronological).limit(3)

다시 한번, 에지에서 인수를 사용하려면 fields 매개변수에 에지를 지정해야 합니다. 또한 이 화면과 같이 단일 필드 또는 에지에 .limit().order() 인수를 결합할 수 있습니다.

결과는 다음과 같습니다.

{
  "comments": {
    "data": [
      {
        "created_time": "2017-12-12T14:12:20+0000",
        "message": ":) :) :)",
        "id": "1809938745705498_1809939942372045"
      },
      {
        "created_time": "2017-12-12T14:14:03+0000",
        "message": "seasons greetings!",
        "id": "1809938745705498_1809941802371859"
      },
      {
        "created_time": "2017-12-12T14:14:11+0000",
        "message": "My bestie <3",
        "id": "1809938745705498_1809941879038518"
      }
    ],
    "paging": {
      "cursors": {
        "before": "WTI5dGJXVnVkRjlqZAFhKemIzSTZANVGd3T1Rrek9UZAzROVGN3TlRNNE5Eb3hOVEV6TURnM09UTTIZD",
        "after": "WTI5dGJXVnVkRjlqZAFhKemIzSTZANVGd4TURBd09UazROVFk1T0RNM05Eb3hOVEV6TURreU5qQXoZD"
      },
      "next": "https://graph.facebook.com/1809938745705498/comments?access_token=valid_token_goes_here"
    }
  },
  "id": "1809938745705498"
}

게시

대부분의 에지를 사용하면 노드에서 컬렉션에 개체를 게시할 수 있습니다. 이렇게 하려면 노드의 에지에 POST 요청을 사용하면 됩니다. 예를 들어, 사진 노드의 /comments 에지를 사용하여 사진에 댓글을 게시할 수 있습니다.

POST https://graph.facebook.com
  /1809938745705498
    /comments
      ?message=Awesome!

성공한 경우 대부분의 에지는 방금 게시한 개체의 ID(보통 게시된 개체의 ID와 새 ID 문자열의 조합)를 반환합니다.

{
  "id": "1809938745705498_1810399758992730"
}

게시하는 데는 일반적으로 추가 권한이 필요하므로 필요한 권한은 각 에지의 참조 문서를 확인하여 결정하세요.

개체를 게시하는 데 사용되는 액세스 토큰은 개체의 모양에 영향을 미칠 수도 있습니다. 페이지 액세스 토큰이 사용되면 페이지에서 개체를 게시한 것처럼 표시되며 사용자 액세스 토큰이 사용되면 개체가 사용자에 의해 게시된 것처럼 표시됩니다.

많은 에지에서는 새로 게시된 개체를 즉시 읽을 수 있는 쓰기 후 읽기, 여러 게시 작업을 하나로 연결할 수 있는 일괄 게시와 같은 고급 기능을 지원합니다.

업데이트

POST 요청을 사용하여 기존 노드에 업데이트 작업을 수행할 수 있습니다. 예를 들어, 기존 댓글의 message 필드를 업데이트하려면 다음을 수행하세요.

POST https://graph.facebook.com
  /1809938745705498_1810399758992730
    ?message=Happy%20Holidays!

성공한 경우 노드에서 success 필드와 true 값을 반환합니다.

{
  "success": true
}

게시 작업과 마찬가지로 업데이트 작업에는 각 노드의 참조 문서에 나열된 추가 권한이 필요합니다. 또한 대부분의 에지와 마찬가지로 많은 노드에서도 쓰기 후 읽기를 지원합니다.

삭제

일반적으로 DELETE 작업을 사용하여 노드를 삭제할 수 있습니다.

DELETE https://graph.facebook.com
  /1809938745705498_1810399758992730

성공한 경우 노드에서 success 필드와 true 값을 반환합니다.

{
  "success": true
}

일반적으로 내가 만든 노드만 삭제할 수 있지만 삭제 작업의 요구 사항은 각 노드의 참조 가이드를 확인하세요.

모든 HTTP 메서드를 지원하지 않는 클라이언트를 지원하려면 노드에 POST 요청을 보내고 method=delete 매개변수와 값을 포함하여 HTTP 메서드를 덮어쓰세요.

POST https://graph.facebook.com
  /1809938745705498_1810399758992730
    ?method=delete

페이지를 매긴 결과의 트래버스

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

커서 기반 페이지 매김

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

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

{
  "data": [
     ... Endpoint data is here
  ],
  "paging": {
    "cursors": {
      "after": "MTAxNTExOTQ1MjAwNzI5NDE=",
      "before": "NDMyNzQyODI3OTQw"
    },
    "previous": "https://graph.facebook.com/me/albums?limit=25&before=NDMyNzQyODI3OTQw"
    "next": "https://graph.facebook.com/me/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/me/feed?limit=25&since=1364849754",
    "next": "https://graph.facebook.com/me/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 호출에는 오프셋 기반 페이지 매김이 지원되지 않습니다. 일관된 결과를 얻으려면 응답에 반환되는 이전/다음 링크를 사용하여 페이지 매김을 하는 것이 좋습니다.