在一些可能會返回許多資訊的 API 方法中,為了更好地展示資訊,通常都會將需要返回的資訊進行分頁,如查詢可用鏡像,返回40條資料,預設情況下會將結果分為10條一頁,總共會有4頁,一次只會返回1頁的資訊,所以造成返回的資料不全,使用時可以通過 PageSizePageNumber 來控制,這兩個參數的說明如下:

參數 類型 必需 描述
PageNumber Integer 執行個體狀態列表的頁碼,起始值為 1,預設值為 1
PageSize Integer 分頁查詢時設定的每頁行數,最大值 100 行,預設值為 10

例如查詢鏡像,查詢杭州地域目前可用的官方公共鏡像,查詢結果中 TotalCount 顯示有39條,那麼結果將預設分成四頁,若希望一次獲取完,可以在請求中加入 PageSize,設定為大於39的數(若使用 Java SDK,可以在 Request 對象中通過 setPageSize 方法將 PageSize 設定為大於39的數值),這樣請求後就可以一次返回39個鏡像的資料了。

以下是 Java SDK 的示範:

預設情況下,PageSize 值為10(因為 Java SDK 若不設定 PageSize 的值,使用 getPageSize 返回的會是 null,API 伺服器會預設將 PageSize 設定為10):

程式碼片段如下:

DescribeImagesRequest describe = new DescribeImagesRequest();
        //describe.setPageSize(50);//預設情況下不設定的話PageSize就是10
        describe.setRegionId("cn-hangzhou");
        describe.setImageOwnerAlias("system");
        System.out.println("當前請求的PageSize大小:"+describe.getPageSize());
        DescribeImagesResponse response
                = client.getAcsResponse(describe);

        System.out.println("鏡像總數:"+response.getTotalCount());
        System.out.println("返回的響應中鏡像數量="+response.getImages().size());

使用 setPageSizePageSize 值設定為50後,就可以一次性的返回所有鏡像了:

程式碼片段如下:

DescribeImagesRequest describe = new DescribeImagesRequest();
        describe.setPageSize(50);//這裡在Request中通過setPageSize()方法將每頁顯示的數量設定為50
        describe.setRegionId("cn-hangzhou");
        describe.setImageOwnerAlias("system");
        System.out.println("當前請求的PageSize大小:"+describe.getPageSize());
        try {
            DescribeImagesResponse response
                = client.getAcsResponse(describe);

            System.out.println("鏡像總數:"+response.getTotalCount());
            System.out.println("返回的響應中鏡像數量="+response.getImages().size());
说明
PageSize 的最大值為100,若查詢的結果大於100,需要藉助 PageNumber 來實現獲取後幾頁的資料,即多次提交請求,每次設定 PageNumber 為1、2、3…,以獲取所有的返回資訊。可以在請求中通過 setPageNumber() 這個方法指定需要返回的頁數。