0

エンタープライズ Box の実装を管理するために使用される一連の PowerShell 関数に取り組んでいます。現在、グループ セクションに取り組んでおり、2.0 API を介してグループを正常に返すことができます。ただし、グループ API への呼び出しにはデフォルトで 100 の制限があり、返されるグループの数が制限されているようです。

Box dev docsから:

curl https://api.box.com/2.0/groups -H "Authorization: Bearer ACCESS_TOKEN"

戻り値

{
    "total_count": 1,
    "entries": [
        {
            "type": "group",
            "id": "1786931",
            "name": "friends"
        }
    ],
    "limit": 100,
    "offset": 0
}

すべてのグループを一挙に取得するか、少なくともすべてのグループをバッチ処理する方法が必要です。制限を無制限 (0 と仮定します) または少なくともそれ以上に設定する方法はありますか?

状況によっては、グループの最初のプッシュは約 235 グループになり、すぐに別の 3,000 グループ以上になります。これらのグループ メンバーシップを定期的に更新する必要があります (したがって、PowerShell モジュールを構築しています)。

4

1 に答える 1

1

ページング用の Box API パターンはlimitoffsetクエリ パラメータを使用します。グループについては文書化されていませんが、試してみる価値はあります。他のタイプのコレクションの最大制限は 1000 です。私はここでそれを試して、それがどうなるか見てみたい.

curl https://api.box.com/2.0/groups?limit=1000&offset=0 
-H "Authorization: Bearer ACCESS_TOKEN"

API は、他の場所では「無制限」のクエリをサポートしていないため、ここでも同様であると想定します。

更新total_countフィールドはページングに役立ちます。可能な限り少ない数の API 呼び出しでグループを集約する疑似コードを次に示します。

offset = 0
groups = []

do 
{
  // fetch a chunk of groups
  results = curl https://api.box.com/2.0/groups?limit=1000&offset=<offset>

  // add this chunk to your collection
  groups.add(results.entries)

  // increment the offset by the length of the chunk
  offset = offset + results.entries.length

// repeat until the number of groups you've received equals the number expected.
} while (groups.length < results.total_count)  
于 2014-07-08T13:34:51.143 に答える