在一些可能會返回許多響應資訊的API中,為了更友好地展示資訊,我們通常分頁返迴響應資訊。當您忽略了隱藏資訊時,會認為返回的資料不全。
原因分析
以查詢鏡像API DescribeImages為例,假設您查詢華東 1(杭州)地區下可用的公用鏡像。響應資訊中TotalCount顯示有39條,一般情況下,預設分4頁展示響應資訊。
若您希望一次性擷取所有響應資訊,可以在請求中加入PageSize,設定為大於39的數。若您使用的是Java SDK,可以在Request對象中通過 setPageSize方法將PageSize設定為大於39的數值,一次性返回39個鏡像的響應資訊。
PageSize和PageNumber的參數說明如下表所示:
名稱 | 類型 | 是否必需 | 描述 |
PageNumber | Integer | 否 | 查詢介面返回資源資訊列表的頁碼。ECS API均以Describe 作為查詢介面首碼,更多詳情,請參閱API概覽。起始值:1。 預設值:1。 |
PageSize | Integer | 否 | 分頁展示響應資訊時設定的每頁行數,單位:行。 最大值: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 條返回資訊。您可以使用setPageSize將PageSize設定為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());