페이지 번호 매기기

페이지 매김은 클라이언트 애플리케이션에 데이터를 전달할 때 대규모 데이터 집합을 더 작고 관리하기 쉬운 청크 또는 페이지로 분할하는 방법을 나타냅니다. 특히 많은 양의 데이터를 처리할 때 API 요청의 성능과 효율성을 향상시키는 데 사용되는 일반적인 기술입니다. 페이지 매김은 한 청크에 표시할 데이터가 너무 많은 경우 데이터 손실을 방지하는 데도 사용됩니다.

API가 페이지네이션 처리되는지 어떻게 알 수 있나요?

Microsoft Fabric 페이지화된 API에는 이러한 매개 변수가 포함됩니다.

  • continuationUri

  • continuationToken

페이지를 매긴 매개 변수는 어디에서 찾을 수 있나요?

페이지를 매긴 API 응답의 구조는 continuationUri 및 continuationToken 매개 변수를 포함하며 다음과 같습니다.

{
  "value": [
    {
      "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",  
      "displayName": "Lakehouse",
      "description": "A lakehouse used by the analytics team.",
      "type": "Lakehouse",
      "workspaceId": "yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy" 
    },
    {
      "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",  
      "displayName": "Notebook",
      "description": "A notebook for refining medical data analysis through machine learning algorithms.",
      "type": "Notebook",
      "workspaceId": "yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy" 
    }
  ],
  "continuationToken": "ABCsMTAwMDAwLDA%3D",
  "continuationUri": "https://api.fabric.microsoft.com/v1/workspaces/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/items?continuationToken=ABCsMTAwMDAwLDA%3D"
}

패브릭 REST API에서 페이지 매김은 어떻게 사용합니까?

페이지가 매겨진 API에 요청을 보내면, 일반적으로 값 속성 아래에서 데이터 집합을 받게 됩니다. 레코드에는 continuationUri 매개 변수와 continuationToken 매개 변수가 포함됩니다. 이러한 매개 변수를 사용하면 다음 방법 중 하나를 사용하여 다음 레코드 집합을 검색할 수 있습니다.

  • continuationUri을 사용하여 다음 요청을 가져오세요.

  • 쿼리 매개 변수로 사용하여 continuationToken 다음 요청을 빌드합니다.

모든 레코드가 검색되면 continuationUri 응답에서 및 continuationToken 매개 변수가 제거되거나 null로 표시됩니다.

코드 예제

이 예제에서는 클라이언트를 만들고 목록 작업 영역 API를 호출합니다. continuationToken 매개변수는 다음 페이지가 매겨진 작업 영역 청크를 가져오는 데 사용되며, 빈 값이나 null이 반환될 때까지 계속됩니다.

using (HttpClient client = new HttpClient()) 
{ 
    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "<Your token>"); 
    string continuationToken = null; 
    var workspaces = new List<Workspace>(); 
    do 
    { 
        var requestUrl = "https://api.fabric.microsoft.com/v1/workspaces"; 
        if (!string.IsNullOrEmpty(continuationToken)) 
        { 
            requestUrl += $"?continuationToken={continuationToken}"; 
        } 
        HttpResponseMessage response = await client.GetAsync(requestUrl); 
        if (response.IsSuccessStatusCode) 
        { 

            // Parse the response JSON   
            var responseData = await response.Content.ReadAsStringAsync(); 
            var paginatedResponse = JsonConvert.DeserializeObject<PaginatedResponse<Workspace>>(responseData); 

            // Append the list of workspaces in the current retrieved page 
            workspaces.AddRange(paginatedResponse.Value); 

            // Check if there are more records to retrieve 
            continuationToken = paginatedResponse.ContinuationToken; 
        } 
        else 
        { 
            Console.WriteLine($"Error: {response.StatusCode}"); 
            break; 
        } 
    } while (!string.IsNullOrEmpty(continuationToken)); 
}