ios app引擎端点分页

时间:2013-07-08 22:34:52

标签: ios google-app-engine google-cloud-endpoints endpoints-proto-datastore

我正在尝试弄清楚如何使用Google Cloud Endpoints进行分页。我只收到了10个结果。我已将属性shouldFetchNextItems设置为YES。我的查询对象也没有nextToken或maxResults属性。有一个带pageToken的GTLQueryCollectionProtocol,但我看不到它的使用位置。

static GTLServiceOwnit *service = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
    service = [[GTLServiceOwnit alloc] init];
    service.retryEnabled = YES;
    service.shouldFetchNextPages = YES;
});

NSError *error;

NSSortDescriptor *sortDescriptor1 = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES];

GTLQueryOwnit *query = [GTLQueryOwnit queryForBrandList];

[service executeQuery:query completionHandler:^(GTLServiceTicket *ticket, GTLOwnitBrandCollection *object, NSError *clouderror) {
   NSLog(@"counts: %d", [[object items] count]);
   ...

编辑: 这是我在python中的后端:

class Brand(EndpointsModel):
    name = ndb.StringProperty(required=True)

@Brand.query_method(path='brand',
                    http_method='GET',
                    name='brand.list')
def brand_list(self, query):
    """Exposes an API endpoint to query for brands for the current user"""
    return query.order(Brand.name)

谢谢,

1 个答案:

答案 0 :(得分:1)

查看文档中的paging示例。

为了将分页参数包含在您的API中,您需要在方法中明确包含它们:

@Brand.query_method(query_fields=('limit', 'pageToken'),
                    path='brand',
                    http_method='GET',
                    name='brand.list')
def brand_list(self, query):
    """Exposes an API endpoint to query for brands for the current user"""
    return query.order(Brand.name)

查询限制的默认值为10。您可以更改它,但您应该设置合理的limit。它是query_method中的limit_default字段。