如何与Okta API调用分页?



很抱歉这个愚蠢的问题,但我从7年前看到了这个帖子,但我想知道如何做同样的事情:

如何使用CURL从Okta api调用获取下一页

我看到'-i'标志传递给curl以获得'下一个';URL,但我仍然不完全确定如何循环通过在标题中提供的后续URL,直到没有进一步的结果返回。谢谢你的建议!

分页代码基于https://michaelheap.com/follow-github-link-header-bash/

# Set these:
url="https://COMPANY.okta.com/api/v1/users"
token="..."
# Pagination code based on https://michaelheap.com/follow-github-link-header-bash/
while [ "$url" ]; do
r=$(curl --compressed -Ss -i -H "authorization: SSWS $token" "$url" | tr -d 'r')
echo "$r" | sed '1,/^$/d' | jq -r '.[].profile.login'
url=$(echo "$r" | sed -n -E 's/link: <(.*)>; rel="next"/1/pi')
done

这个版本的shell脚本有更好的变量名,使其更容易理解。

正如您在问题中发布的那样,使用-i--include选项运行curl包括响应头。

我发布了同样的更新关于如何使用CURL从Okta api调用获得下一页,以及Python版本和为什么你可能想要使用Python而不是CURL的解释。

#!/usr/bin/env bash
# Set these:
url='https://COMPANY.okta.com/api/v1/users'
token='...'
# Pagination code based on https://michaelheap.com/follow-github-link-header-bash
while [ "$url" ]; do
r=$(curl -i --compressed -Ss -H "authorization: SSWS $token" "$url" | tr -d 'r')
headers=$(echo "$r" | sed '/^$/q')
body=$(echo "$r" | sed '1,/^$/d')
echo "$body" | jq -r '.[].profile.login'
url=$(echo "$headers" | sed -n -E 's/link: <(.*)>; rel="next"/1/pi')
done

相关内容

  • 没有找到相关文章

最新更新