Red Hat Satellite API返回数据不全,如何处理per_page参数获取全部errata?
问题解答
- 不需要发送PUT请求修改服务端配置,你可以直接通过GET请求一次性拉取全部536条errata数据。
一次性拉取全部数据的实现方式
Katello API支持在GET请求的查询参数中直接指定per_page的值,官方默认允许的最大值为1000,536条远低于该上限,直接调整curl请求参数即可:
curl --request GET --insecure --silent --user username:password "https://myMachine/katello/api/errata?per_page=1000"
注意:请求URL需要加引号包裹,避免Shell解析特殊字符出错。
数据量超过上限时的最优分页处理方案
如果后续需要拉取的errata总数超过1000,建议通过简单的Shell脚本循环分页拉取,示例逻辑如下:
- 先请求第一页获取总条数
total和单页上限per_page - 计算总页数,循环遍历每一页拉取数据,拼接结果即可
# 分页拉取示例 USER="username:password" BASE_URL="https://myMachine/katello/api/errata" PER_PAGE=1000 # 拉取第一页获取总条数 TOTAL=$(curl -k -s -u "$USER" "$BASE_URL?per_page=$PER_PAGE" | jq -r '.total') TOTAL_PAGES=$(( (TOTAL + PER_PAGE - 1) / PER_PAGE )) # 循环拉取所有页 for (( page=1; page<=TOTAL_PAGES; page++ )); do curl -k -s -u "$USER" "$BASE_URL?page=$page&per_page=$PER_PAGE" | jq '.results[]' >> all_errata.json done
以上示例依赖
jq工具处理JSON返回值,可提前通过系统包管理器安装。
内容的提问来源于stack exchange,提问作者Sam
相关产品推荐
相关产品推荐

