我正在尝试弄清楚如何使用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)
谢谢,
答案 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
字段。