ページ分割

次のトピックでは、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属性を参照する必要があります。