Web appOpen in Telegram

Thread用来判断是否还有下一页的字段是"nextPageCursor",当取值是两个冒号""的时候代表没有下一页对吧?是否可能出现空格或者其他代表结束的数值?我需要一个判断没有下一页的准确的字段数值

19 messages · –
M
用来判断是否还有下一页的字段是"nextPageCursor",当取值是两个冒号""的时候代表没有下一页对吧?是否可能出现空格或者其他代表结束的数值?我需要一个判断没有下一页的准确的字段数值
  1. K
    在以下两种情况下,可以确定不存在下一页: 1)next page cursor 为空字符串 2)返回的数量小于传入的 limit,除非该请求预期只返回单个结果
    1. M
      目前担心的就是万一出现游标不正常的情况,如果严格按照"nextPageCursor"取值""作为没有下一页的标志,这是比较严格保守的,但是担心出现空格等异常情况。那么按照你的回复,还可以有第二种判别方式,就是“返回的数量小于传入的 limit”,比如实际有201条,传入limit为200,第一页看完翻页到下一页,下一页出现1条,但是"nextPageCursor"是空格,这种情况下,用你第二种判别方式,也是可以确定不存在下一页。可以这样理解你的回复吗?
      1. K
        如果您使用 limit=200 请求第二页,而 response 中只返回了 1 条数据,那么可以认为已经到达分页末尾(最后一页),此时返回的 next cursor 已经没有实际意义。
        1. M
          如果传入的limit是200,查到的持仓数量也是200,但是"nextPageCursor"出现空格、null等而非“”的标准结束标识,那么这个时候难以判断是否存在下一页,遇到这种情况怎么应对呢?
          1. K
            由于有效的 cursor 不能为 null、空字符串或仅包含空白字符,因此您可以设置过滤条件来拒绝此类 cursor。如果传入的 cursor 在其他情况下无效,请求下一页时将返回错误信息或空页面,这表示上一页已经是最后一页。
            1. M
              是否可以设置“”作为官方认定的"nextPageCursor"唯一结束标识?也就是把空格、null等异常字符过滤掉?
              1. K
                "" 是 nextPageCursor 字段使用的正确分页结束标识,这一点是正确的。当 nextPageCursor 返回 "" 时,可以确定您已经请求到了最后一页。
          2. M
            那么我说的这种异常,是否应该判定为数据不可信?也就是limit为200,获取了200条,但是nextPageCursor字段返回了空格
            1. K
              您能否提供一个这种情况的示例?正常情况下,不应该出现您发送 limit=200 的 request,返回了 200 条数据,但 nextPageCursor 的值却是空格或 undefined 的情况。
              1. M
                也就是必须采用nextPageCursor 的“”作为唯一的判断没有下一页的标志对吗? 我以上都是假设,风险异常都是需要假设,才知道到底你们的字段数值该如何准确使用
                1. K
                  根据我之前的说明,您可以使用以下两个条件来判断是否存在下一页: 1)如果 nextPageCursor 的值为空字符串 "",则表示已经到达最后一页。 2)如果实际返回的数据条数少于传入的 limit,则表示已经到达最后一页。同样,如果预期返回的数据条数本身是已知的,则不应再请求下一页。 对于第 2 种情况,例如您发送的 request 中 limit=200,但实际只返回了 199 条数据,那么可以判断不存在第 2 页。 同样,如果您发送 request 时指定了例如 symbol=BTCUSDT,并且预期只会返回 1 条或 2 条数据,那么这种情况下也不会存在第 2 页。
                  1. M
                    你一直不正面回答“”是否可以作为唯一必然的作为判断没有下一页的标识,而是通过举例和逻辑分析绕开对“”这个返回值的唯一性的断定。也就是根据你的回答,交易所应该将“”作为nextPageCursor没有下一页的必然且唯一的标识,但是你也不能给出肯定的答复,根据你的答复,我依然需要加上各种判定条件做综合判定,才能避免nextPageCursor出现空格、null等非预期内的数值,是这样吧?
                    1. K
                      nextPageCursor="" 是判断不存在下一页的充分条件,但不是必要条件。您可以参考我之前的消息,其中已说明准确的判断条件,具体如下: 1. 如果当前页是最后一页,nextPageCursor 可能为 "",也可能为一个有效的非空 cursor。 2. 如果当前页不是最后一页,nextPageCursor 绝不会为 "",并且会包含一个可用于请求下一页的有效 cursor。 3. null、空白字符或其他无效的 cursor 值都不是有效的分页状态。如果将此类值作为 cursor 传入,请求将会返回错误。 因此: nextPageCursor="" 可以保证不存在下一页。(情况 #1) nextPageCursor!="" 并不能保证下一页一定包含数据。(情况 #2) 在某些情况下,即使当前页已经是最后一页,也仍可能返回一个有效的非空 cursor。(情况 #2) 如果以上说明仍有不清楚的地方,或需要进一步说明,请告诉我。
                      1. M
                        不这么一路追问都问不出会可能出现这种奇葩,既然都到最后一页了,为什么不必然的是“”,只能通过“”推断确实到最后一页了,但是到了最后一页出现的并不一定是“”,这是一个奇怪的逻辑,那么会出现什么有效的非空cursor呢?都已经到最后一页了,怎么还会有有效的非空cursor?
                        1. K
                          由于部分 endpoints 的 pagination algorithm 具体实现方式,确实会出现这种情况。这也是我之前消息中提到情况 #2 的原因。 在某些场景下可以观察到这种行为。例如,当您请求单个 position 时: /v5/position/list?category=linear&symbol=BTCUSDT 即使只返回一个 position,也可能会收到一个有效的 nextPageCursor,但使用该 cursor 请求第二页时会得到无效结果。(这就是之前提到的情况 #2:当明确预期只会返回单个 element 时,应当认为 nextPageCursor 没有实际意义。) 我理解这种行为可能并不理想,也容易造成困惑。这是旧系统遗留下来的行为。不过,它通常只会影响本身不需要继续 pagination 的情况,并且可以通过以下规则进行过滤: 如果返回的 element 数量 < 请求中提供的 limit,则默认可以认为 nextPageCursor 已经无关紧要,无论它是 ""(可以确定已经是最后一页),还是一个有效的 next page cursor。
                          1. M
                            你的信息很有价值,所以回到我之前的问题,目前剩下一个逻辑漏洞,就是当limit=200,返回的数量也正好200,这个时候如果游标出现缺失、null、纯空格等异常,那么没法查下一页,也没法判断没有下一页。当然这是属于异常,如果出现“”那毫无疑问就结束了,如果出现有效的非空cursor,那么再多查一页,然后查到空的,那也没问题,也就是我假设的游标出现缺失、null、纯空格等异常,应该不能出现,要不然这种异常会在limit=200,而反馈正好也是200条的时候,出现无法判定也无法进一步查询的死局,是这样吧?
                            1. K
                              抱歉之前造成了混淆。您所描述的这种情况在正常运行状态下不会发生。cursor 的值不会为 null,不会包含空白字符,也不会从 JSON response 中缺失。 如果确实出现上述情况,则可以确定这是一个 bug 或其他内部异常,例如对应的 service 不可用,或者 request 因其他内部原因失败。
BBybit Chinese APIBybit Chinese API@BybitChineseAPI · group · Crypto
8 850members43writing in 30 days
Venue feed Open in Telegram

An open public feed from the search index ChatCrawler — “Google for public Telegram”; refreshed as the venue is crawled. Times are UTC.

Public content only, official Telegram API. About · FAQ · What we do not do · Remove a page · Catalog · Search · How we count