全部產品
Search
文件中心

Elastic Compute Service:為什麼API、SDK和阿里雲CLI只返回10條資訊

更新時間:Feb 28, 2024

在一些可能會返回許多響應資訊的API中,為了更友好地展示資訊,我們通常分頁返迴響應資訊。當您忽略了隱藏資訊時,會認為返回的資料不全。

原因分析

以查詢鏡像API DescribeImages為例,假設您查詢華東 1(杭州)地區下可用的公用鏡像。響應資訊中TotalCount顯示有39條,一般情況下,預設分4頁展示響應資訊。

若您希望一次性擷取所有響應資訊,可以在請求中加入PageSize,設定為大於39的數。若您使用的是Java SDK,可以在Request對象中通過 setPageSize方法將PageSize設定為大於39的數值,一次性返回39個鏡像的響應資訊。

PageSizePageNumber的參數說明如下表所示:

名稱類型是否必需描述
PageNumberInteger查詢介面返回資源資訊列表的頁碼。ECS API均以Describe作為查詢介面首碼,更多詳情,請參閱API概覽

起始值:1。

預設值:1。

PageSizeInteger分頁展示響應資訊時設定的每頁行數,單位:行。

最大值:100。

預設值:10。

說明 PageSize的最大值為100,若查詢的結果大於100,您需要藉助PageNumber 擷取後幾頁響應資訊,即多次提交請求。每次設定PageNumber為1、2 和 3 等,以擷取所有的響應資訊。如果您使用的是Java SDK,可以在請求中通過setPageNumber()方法指定需要返回的頁數。

預設顯示狀態的 Java SDK 樣本

以查詢鏡像API DescribeImages為例,PageSize的預設值為10。Java SDK中若不設定PageSize的值,使用 getPageSize 返回的是null,API伺服器會預設將PageSize設定為10。以下為請求程式碼範例:

DescribeImagesRequest describe = new DescribeImagesRequest();
        //describe.setPageSize();//預設情況下不設定的話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());
            

自訂顯示狀態的 Java SDK 樣本

以查詢鏡像API DescribeImages為例,假設會有3 條返回資訊。您可以使用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());
        DescribeImagesResponse response
                = client.getAcsResponse(describe);

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