【问题标题】:What is the correct way to use Continuation token with Asp.net core Web API将 Continuation 令牌与 Asp.net 核心 Web API 一起使用的正确方法是什么
【发布时间】:2020-06-30 06:43:39
【问题描述】:

我正在使用带有 asp.net core 3.1 Table API 的 Azure Cosmos DB 和 Azure Storage Table。对于这两者,我们可以使用 Continuation 令牌进行分页并以可管理的块返回大数据。

ContinationToken 具有以下格式:

我也有 Web API,它有一个 List API,它以块的形式返回对象,API 要求用户/开发人员指定限制(对象的数量例如 100),如果数据库包含的内容超过指定的限制,则需要返回继续令牌以查询下一组对象。

现在,由于 TableContinuationToken 是一个类,我获取 Table API 返回的令牌并将其序列化,将其编码为 Unicode 字节并将其返回给用户。这有助于我的 API 将延续令牌作为简单的编码字符串返回,用户可以轻松地将其传递给下一组数据。

这会以简单的字符串格式返回令牌(例如eyJOZXh0UGFydGl0aW9uS2V5IjoiMSEyOCFTMlJpTTJWSk1HODRNRzFzTlRGMk9HaGFiak5CIiwiTmV4dFJvd0tleSI6IjEhMjAhZFc1cGRIUmxjM1J3Y205cVpXTjAiLCJOZXh0VGFibGVOYW1lIjpudWxsLCJUYXJnZXRMb2NhdGlvbiI6MH0

它对我来说效果很好,但在我使用这种方法进行生产之前,我想检查这是否是使用 TableContinuationToken 的正确方法,是否有任何其他内置方法可以将延续令牌作为简单字符串获取?

在生成的延续令牌失效前是否有时间限制?

【问题讨论】:

  • 你打算如何反序列化它?您是否测试过反序列化是否有效?
  • 是... asp.net core 3.0 有一个内置的 json 序列化器... 反序列化工作 TableContinuationToken tableContinuationToken = System.Text.Json.JsonSerializer.Deserialize(Base64UrlEncoder.Decode(continuationToken) );

标签: c# asp.net-core azure-cosmosdb asp.net-core-webapi azure-table-storage


【解决方案1】:

它对我很有效,但在我使用这种方法进行生产之前,我 想检查这是否是使用的正确方法 TableContinuationToken 以及是否有任何其他内置方式来获取 延续标记作为一个简单的字符串?

只要您可以反序列化字符串以取回继续令牌,我认为您的方法没有任何问题。

在生成延续令牌之前是否有任何时间限制 失效了?

不,没有时间限制。延续令牌基于为特定查询获取的数据,您可以使用此令牌来获取下一组数据。但是,您应该保持此令牌值不透明,因为您不应尝试推断令牌值并在此基础上构建任何业务逻辑。

【讨论】:

  • 谢谢...您是否发现我使用内置 JsonSerilizer 反序列化的方式有任何问题?
猜你喜欢
  • 2021-05-18
  • 2014-03-24
  • 2019-10-10
  • 2018-04-10
  • 2013-01-02
  • 1970-01-01
  • 2020-08-27
  • 2020-07-10
  • 2020-09-29
相关资源
最近更新 更多