RStudio / Hadley Wickham 'httr' R パッケージを使用して、Okta API GET 要求 (' List Users Assigned to Application ') からすべてのレコードを返そうとしています。次のリクエストは、呼び出しごとにレコードの最大制限 (500) を取得するために完全に正常に機能します。
oktaurl <- "https://mydomain.okta.com/api/v1/apps/applicationID/users?limit=500"
oktagetjson <- with_verbose(content(GET(oktaurl,
add_headers("Authorization" = "bearer myapikey",
"Content-Type" = "application/json;charset=UTF-8"))))
「oktagetjson」で返されたデータを「jsonlite」と R を使用して使用可能なデータ フレームに解析することは問題ではありません。ただし、この特定の API 呼び出しは、1 回の呼び出しで最大 500 レコードに制限されているため、すべての「Link:」ヘッダーを何らかの方法で取得してページ分割し、数千のレコードすべてを取得する必要があります。「Link:」ヘッダー自体は次の形式です。
Link: <https://mydomain.okta.com/api/v1/apps/applicationID/users?limit=500>; rel="self"
Link: <https://mydomain.okta.com/api/v1/apps/applicationID/users?after=random cursor string&limit=500>; rel="next"
(Okta API のドキュメントでは、ページネーションの構造についてここで説明しています)
私はここで立ち往生しています:
- 「oktagetjson <- with_verbose(content(GET(oktaurl, etc ... ) ...)」を呼び出して oktagetjstonオブジェクトを呼び出しますが、'Link:' ヘッダーはオブジェクト自体の一部として返されません。呼び出し
headers(HEAD("https://mydomain.okta.com/api/v1/apps/<applicationID>/users"))
によっていくつかのヘッダーが返されますが、ページネーションの 'Link:' ヘッダーは返されません - 「Link:」ヘッダーにはランダムなカーソル文字列が含まれているため、実際の形式を推測できません
- 必要な「Link:」ヘッダーをすべて取得できたとしても、R でそれらすべてを呼び出し、反復処理、ページ分割、再帰的に追跡して、数千レコードのデータセット全体のオブジェクトを構築する方法がわかりません。
残念ながら、要求、サービス プロバイダー、およびデータの性質上、実際のリンクとサンプル データを使用して完全に再現可能な例を提供することはできませんが、概念が明確であり、誰かが私を正しい方向に向けてくれることを願っています。この作業に 'httr' パッケージまたは R を使用しないようにします。
ご検討をお願いいたします。