分页

分页是指将数据传送到客户端应用程序时,将一组大量数据分解成更小、可管理的区块或页面的做法。 这是一种常见技术,用于提高 API 请求的性能和效率,尤其是在处理大量数据时。 分页还用于防止数据丢失,当数据过多而无法在一个区块中显示时。

如何知道 API 是否已分页?

Microsoft Fabric 分页 API 包含这些参数。

  • continuationUri

  • continuationToken

在哪里可以找到分页参数?

分页 API 响应的结构包含 continuationUricontinuationToken 参数,如下所示:

{
  "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"
}

如何在 Fabric REST API 中使用分页?

向分页 API 发出请求时,通常会在“值”属性下收到一组记录。 记录包括 continuationUricontinuationToken 参数。 使用这些参数,可以使用以下方法之一检索下一组记录:

  • 通过 continuationUri 获取下一个请求。

  • 使用 continuationToken 作为查询参数来生成下一个请求。

检索所有记录后,将从响应中删除 continuationUricontinuationToken 参数,或显示为 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)); 
}