Looker API 版本控制

大多数应用都是使用某种形式的客户端 SDK 或 API 网址编写的。客户端 SDK 和 API 网址绑定到特定的 Looker API 版本。即使 Looker 对新版 API 进行更改,您的应用也会继续正常运行。在您选择升级客户端 SDK(或修改 API 网址)以使用新的 Looker API 版本之前,您的应用不会受到其他 API 版本中的更改的影响。

Looker 如何更改 API

Looker API 的架构旨在为 Looker API 端点提供稳定性,从而为您的应用提供稳定性。

随着我们向 Looker 添加更多功能,我们也会更新 Looker REST API 以便访问或管理这些新功能。对于每个 Looker 版本,我们都会向当前版本的 Looker API 添加新的 API 函数、参数和响应类型属性。在大多数情况下,对 API 的添加不是重大更改,因此我们可以保留 API 的现有版本,而不会影响任何基于该 API 构建的现有应用代码。您现有的应用代码可能只是不知道后续 Looker 版本中出现的新函数、参数或功能。

对于会破坏现有应用代码的 API 更改,我们会将这些重大更改捆绑到新的 API 版本中。这意味着旧版 API 将继续像以前一样运行,而新版 API 将同时运行,并包含更改和更新。单个 Looker 实例中可以同时存在多个 API 版本,因此您可以选择何时升级到新的 API 版本。您之前构建的用于调用旧端点的现有代码将继续调用旧端点。新代码应在最新的 API 版本级别中调用新版本的端点。

不过,严重安全问题除外。如果我们发现与 API 的特定部分相关的严重安全问题,我们会尽一切努力尽快缓解该安全问题,这可能包括停用存在漏洞的功能,直到找到合适的解决方案为止。

如果我们因需要采用更好的实现方式或解决方案而需要停用某项功能或属性,通常会保持当前 API 不变,但会将关联的 API 端点标记为“已弃用”,以表明您应在应用代码中停用该端点。

API 的重大更改和增量更改

重大更改是指删除或重命名 API 端点的现有制品。可能包括:

  • 更改或删除参数名称或类型
  • 添加新的必需参数
  • 更改基本网址
  • 更改或删除响应中的现有属性

另一方面,添加性更改可以应用于稳定端点。其中可能包括:

  • 新的可选参数
  • 响应中的新属性(我们认为这不会造成中断,因为我们假设您的代码会忽略响应中的未知属性,这在 REST API 社区中是一种常见做法)

如果稳定的 Looker API 端点需要进行重大更改才能继续使用新架构或功能,则通常会将更改添加到新端点并将其捆绑到新 API 版本中,以便现有 API 端点保持不变。

API 端点的标志

大多数 API 端点都被视为稳定,这意味着它们应该不会发生变化。Looker 不会向稳定端点发布重大变更,除非在极端情况下(例如为了修复安全问题)。

其他 API 端点可能会标记为 Beta 版已弃用

  • Beta 版端点正处于积极开发阶段,将来可能会发生变化。它们不受重大更改的保护。使用 Beta 版端点时,请考虑 Looker API 的更改是否会对您的应用或开发周期造成特别大的影响。如果您计划使用 Beta 版端点,请务必阅读 Looker 的版本说明,以便了解所有变更。
  • 已弃用的端点是指目前仍受支持且仍可使用的端点,但将在未来的版本中删除。使用已弃用端点的旧代码应更新为不再使用已弃用的端点。如果未来版本的 Looker 移除对该端点的支持,那么任何仍在使用该端点的代码都会中断。在大多数情况下,已弃用的端点将被改进后的功能取代。如果您发现应用正在使用已弃用的函数或属性,最好尽快重构代码,以替换已弃用的元素。

Beta 版和已废弃的端点会在 API Explorer4.0 版 API 参考中标记出来。未标记的端点被视为稳定。

API 调用类型

以下类型的 API 调用被定义为查询 API 调用

  • 自动化查询流水线所需的调用
  • 从客户端数据库获取数据的调用
  • 运行 SQL 查询或获取内容结果的调用

示例如下:

定义为管理 API 调用的 API 调用类型如下:

  • 构建应用、控制实例中的内容和执行管理任务所需的调用
  • 用于控制 Looker (Google Cloud Core) 实例的调用
  • 执行内容管理、权限和用户管理、实例管理或跨文件夹拉取内容的操作

例如:

迁移到新的 API 版本

当您选择将客户端 SDK 或 API 网址升级到新的 API 版本时,需要检查应用代码,看看您是否依赖于新 API 版本中已发生更改的内容。请务必执行以下操作:

  1. 在应用代码中搜索更新后的函数、值和属性名称。
  2. 验证您的应用代码是否支持类型方面的任何更改(例如从整数到字符串)。
  3. 审核您的代码(请参阅审核代码部分)。

审核您的代码

对于某些语言,可以在构建时发现 API 中的重大变更,并将其视为编译错误:

  • 如果您的应用采用的是编译型强类型语言,那么新 API 版本中与现有代码不一致的参数或响应类型的结构性更改应该会因编译类型检查和编译器错误消息而变得显而易见。
  • 如果您的应用是用松散类型的动态语言(例如 JavaScript、Ruby 和 Python)编写的,那么您可能很难找到应用中会受到新 API 版本中的重大变更影响的部分。此类语言可能需要运行时单元测试来查找与类型更改相关的任何问题。

在所有情况下,最佳实践都是进行单元测试,以测试应用代码(包括对 Looker API 的调用,而非模拟调用)。