Google App Engine一次使用nextPageToken查询50个结果

时间:2016-01-08 00:15:56

标签: google-app-engine google-cloud-endpoints objectify

我的GAE Cloud端点中有以下Api方法:

@ApiMethod(name = "getConferences", path = "get_conferences", httpMethod = ApiMethod.HttpMethod.POST)
    public List<Conference> getConferences(@Named("userId") Long userId) {

        List<Conference> conferenceList = ofy().load().type(Conference.class)
                    .ancestor(Key.create(User.class, userId))
                    .order("-createdDate").list();


        return  conferenceList; 

}

它运行良好,并为我返回给定用户按日期排序desc的所有会议。 Conference类具有以下属性以指定它具有User父级:

@Parent
private Key<User> userKey;

我的问题是,如何更改上述方法一次只返回50个结果(会议),还能够指定一个类似nextPageToken的参数来给我下50个结果?

我已经在其他API方法中看到了这一点,但似乎无法找到适用的GAE或Cloud Endpoints的良好示例。

1 个答案:

答案 0 :(得分:1)

  1. 您应该返回List<Conference>
  2. ,而不是返回com.google.api.server.spi.response.CollectionResponse<Conference>
  3. 添加命名参数,例如@Named("nextPageToken") String pageToken
  4. 如果pageToken != null.order()之后您需要链接.startAt(Cursor.fromWebSafeString(pageToken))
  5. 您还需要添加.limit(50),因为您希望它是您的页面大小。
  6. 而不是.list()使用.iterator(),而getStartCursor()方法。使用this和迭代器构造CollectionResponse
  7. 有关如何使用游标的非终结点示例,另请参阅this page。其余的应该是微不足道的。