如何使 Google 端点 API 的限制为空

How to Make the Limit null for Google Endpoint API

public CollectionResponse<Eateries> list(@Nullable @Named("cursor") String cursor, @Nullable @Named("limit") Integer limit) {
    limit = limit == null ? DEFAULT_LIST_LIMIT : limit;
    Query<Eateries> query = ofy().load().type(Eateries.class).limit(limit);

以上是从端点 api 获取列表的代码片段。

我正在尝试将限制设置为空,以便使用以下方法检索 DataStore 服务器上的所有条目:

        List<Eateries> eateries = myApiService.list().set("limit", null).execute().getItems();

然而,它仍然将其限制为 DEFAULT_LIST_LIMIT 设置的任何值。

  1. 如何将限制设置为空,以便一次性获取所有条目?
  2. 谁能给我解释一下下面这行是干什么的:

        limit = limit == null ? DEFAULT_LIST_LIMIT : limit;
    
limit = limit == null ? DEFAULT_LIST_LIMIT : limit;

事实证明,如果 limit 为 null,此行会将 limit 设置为 DEFAULT_LIST_LIMIT 的值。

我尝试将 DEFAULT_LIST_LIMIT 设置为 0,这样 limit 就会变为 0,这实际上意味着在以下情况下没有限制:

ofy().load().type(Eateries.class).limit(limit);

然而它仍然返回一个错误,说块大小必须大于 0。

所以我或多或少地创建了我自己的 ApiMethod,它完全忽略了完全设置限制。

这会做你想做的事:

public CollectionResponse<Eateries> list(@Nullable @Named("cursor") String cursor, @Nullable @Named("limit") Integer limit) {
    Query<Eateries> query = ofy().load().type(Eateries.class);
    if (limit != null) {
        query.limit(limit);
    }