在一些可能会返回许多响应信息的API中,为了更友好地展示信息,我们通常分页返回响应信息。当您忽略了隐藏信息时,会认为返回的数据不全。

原因分析

以查询镜像API DescribeImages为例,假设您查询华东 1(杭州)地域下可用的公共镜像。响应信息中TotalCount显示有39条,一般情况下,默认分4页展示响应信息。

若您希望一次性获取所有响应信息,可以在请求中加入PageSize,设置为大于39的数。若您使用的是Java SDK,可以在Request对象中通过 setPageSize方法将PageSize设置为大于39的数值,一次性返回39个镜像的响应信息。

PageSizePageNumber的参数说明如下表所示:

名称 类型 是否必需 描述
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 条返回信息。您可以使用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());
            
以下为返回示例片段: