合并请求从 Gitlab API 提取数据

问题描述 投票:0回答:1

我正在尝试通过调用 API 从 Gitlab 提取合并请求数据。我将

per_page
之后的值更改为更高的数字,但是它不起作用,并且仍然只获得 100 行,而我有更多行。这是我当前使用的代码。有谁知道如何增加迭代次数?

#Import libraries
import os
import pandas as pd
import requests
from dotenv import load_dotenv
import csv
import json


load_dotenv()

# Assign variables from .env
pat = os.getenv("PAT")
gitlab_url = os.getenv("HOST_URL")

# Set the API endpoint to get MRs
api_url = f"{gitlab_url}/api/v4/merge_requests?scope=all&state=all&per_page=100"

# Add your Personal Access Token to the request headers
headers = {"Private-Token": pat}

# Send the API request and get the response
response = requests.get(api_url, headers=headers)
merge_requests = response.json()


df = pd.DataFrame(merge_requests)
df.info()
df.to_excel("merge_requests.xlsx", index=False)

我尝试更改页数,当我增加页数时,它会减少行数。

python gitlab extract merge-request
1个回答
0
投票

默认情况下,列出端点的请求是分页的。如文档中所述,列出资源时,您可以传递以下参数:

  • page -> 页码(默认:1)。
  • per_page -> 每页列出的项目数(默认:20,最大:100)。

因此您的代码很好,但您只能从第一页获取值。 尝试传递其他页面的值。

更改最后的代码行(注意

&page=2
):

api_url = f"{gitlab_url}/api/v4/merge_requestsscope=all&state=all&per_page=100&page=2"

您已经迭代了所有页面以获得完整列表。页数在 x-total-pages 标题中返回

© www.soinside.com 2019 - 2024. All rights reserved.