ページ分割
次のトピックでは、Oracle Enterprise ManagerのREST APIを使用してAPI出力をページ分割する方法について説明します。
リストのページ分割
ほとんどのリスト操作では、結果のページ分割が行われます。たとえば、EM APIでのGET /em/api/users操作の場合は、結果がページ分割されます。ページ分割リスト操作をコールすると、レスポンス本文で、結果のページがさらにあること、およびnextリソース属性を介してコールするAPIが示されます。レスポンス本文で、結果の前ページがあること、およびpreviousリソース属性を介してコールするAPIが示されます。
GET /em/api/users?limit=2
のレスポンスの例を次に示します。
最初のページ
{
"count": 2,
"links": {
"next": {
"href": "/em/api/users?page=eyJsaW1pdCI6MiwiY3Vyc29yRmllbGRzIjpbeyJuYW1lIjoibmFtZSIsInZhbHVlIjoiREVTSUdORVIiLCJhc2MiOnRydWV9XSwibW92ZUZvcndhcmQiOnRydWV9"
},
"self": {
"href": "/em/api/users?page=eyJsaW1pdCI6MiwibW92ZUZvcndhcmQiOnRydWV9"
}
},
"items": [
{
"authenticationType": "Repository",
"description": "Cloud Software Library User (Internal)",
"isPasswordChangeAllowed": true,
"passwordProfile": "DEFAULT",
"id": "D27BF56E2F7A0C68E0538C104B645540",
"name": "CLOUD_SWLIB_USER",
"category": "Administrator",
"externalId": "CLOUD_SWLIB_USER",
"lifecycleStatus": "ACTIVE",
"isLocked": false,
"links": {
"permissions": {
"href": "/em/api/users/D27BF56E2F7A0C68E0538C104B645540/permissions"
},
"self": {
"href": "/em/api/users/D27BF56E2F7A0C68E0538C104B645540"
},
"roleGrants": {
"href": "/em/api/users/D27BF56E2F7A0C68E0538C104B645540/roleGrants"
}
}
},
{
"authenticationType": "Repository",
"isPasswordChangeAllowed": true,
"passwordProfile": "DEFAULT",
"id": "D2AD0D71143B4E26E0533B8145643764",
"name": "DESIGNER",
"category": "Administrator",
"externalId": "DESIGNER",
"lifecycleStatus": "ACTIVE",
"isLocked": false,
"links": {
"permissions": {
"href": "/em/api/users/D2AD0D71143B4E26E0533B8145643764/permissions"
},
"self": {
"href": "/em/api/users/D2AD0D71143B4E26E0533B8145643764"
},
"roleGrants": {
"href": "/em/api/users/D2AD0D71143B4E26E0533B8145643764/roleGrants"
}
}
}
]
}
2番目のページ
{
"count": 2,
"links": {
"next": {
"href": "/em/api/users?page=eyJsaW1pdCI6MiwiY3Vyc29yRmllbGRzIjpbeyJuYW1lIjoibmFtZSIsInZhbHVlIjoiRU1TU0FfQURNSU4iLCJhc2MiOnRydWV9XSwibW92ZUZvcndhcmQiOnRydWV9"
},
"previous": {
"href": "/em/api/users?page=eyJsaW1pdCI6MiwiY3Vyc29yRmllbGRzIjpbeyJuYW1lIjoibmFtZSIsInZhbHVlIjoiRU1DTE9VRF9BRE1JTiIsImFzYyI6ZmFsc2V9XSwibW92ZUZvcndhcmQiOmZhbHNlfQ"
},
"self": {
"href": "/em/api/users?page=eyJsaW1pdCI6MiwiY3Vyc29yRmllbGRzIjpbeyJuYW1lIjoibmFtZSIsInZhbHVlIjoiREVTSUdORVIiLCJhc2MiOnRydWV9XSwibW92ZUZvcndhcmQiOnRydWV9"
}
},
"items": [
{
"authenticationType": "Repository",
"isPasswordChangeAllowed": true,
"passwordProfile": "DEFAULT",
"id": "D2AD0D71144B4E26E0533B8145643764",
"name": "EMCLOUD_ADMIN",
"category": "Administrator",
"externalId": "EMCLOUD_ADMIN",
"lifecycleStatus": "ACTIVE",
"isLocked": false,
"links": {
"permissions": {
"href": "/em/api/users/D2AD0D71144B4E26E0533B8145643764/permissions"
},
"self": {
"href": "/em/api/users/D2AD0D71144B4E26E0533B8145643764"
},
"roleGrants": {
"href": "/em/api/users/D2AD0D71144B4E26E0533B8145643764/roleGrants"
}
}
},
{
"authenticationType": "Repository",
"isPasswordChangeAllowed": true,
"passwordProfile": "DEFAULT",
"id": "D2AD0D71144D4E26E0533B8145643764",
"name": "EMSSA_ADMIN",
"category": "Administrator",
"externalId": "EMSSA_ADMIN",
"lifecycleStatus": "ACTIVE",
"isLocked": false,
"links": {
"permissions": {
"href": "/em/api/users/D2AD0D71144D4E26E0533B8145643764/permissions"
},
"self": {
"href": "/em/api/users/D2AD0D71144D4E26E0533B8145643764"
},
"roleGrants": {
"href": "/em/api/users/D2AD0D71144D4E26E0533B8145643764/roleGrants"
}
}
}
]
}
ノート:
next
属性がある場合は常に、さらに取得可能なリスト・アイテムがあります。previous
属性がある場合は、取得可能な前のアイテムがあります。
結果の次ページを取得するには
next属性で指定されているURLを使用して、新しいGETリクエストを実行します。next属性がないレスポンスを取得するまで、この手順を繰り返します。この属性が存在しなければ、リストの最後のページに達しているということです。
結果の前ページを取得するには
previous属性で指定されているURLを使用して、同じURLに対して新しいGETリクエストを実行します。previous属性がないレスポンスを取得するまで、この手順を繰り返します。この属性が存在しなければ、リストの最初のページに達しているということです。
ページごとの結果の最大数を変更するには
GET
リクエストで、limit問合せパラメータを、レスポンスで返すアイテムの数に設定します。これは、結果の前ページや次ページを取得するためのリクエストではなく、元のリクエストで実行する必要があります。
ノート:
このAPIでは、上限として指定した数より多く返されることはありませんが、必ずその数が返されるというわけではありません。たとえば、ページ分割後の最後のセットに、アイテムが3つしか含まれていないこともあります。
クライアントは、返されたエントリの正確な数を特定するには、count属性を参照する必要があります。