☰
@googleapis/sql 客户端库版本演进全解析:从 v0.1 到 v9.0 的破坏性变更、Node 门槛与 Cloud SQL Admin API 接入指南
2026/10/16 6:14:47 网站建设 项目流程
  • 后端

【免费下载链接】google-api-nodejs-client

Google's officially supported Node.js client library for accessing Google APIs. Support for authorization and authentication with OAuth 2.0, API Keys and JWT (Service Tokens) is included.

项目地址:https://gitcode.com/gh_mirrors/go/google-api-nodejs-client
点击查看免费下载

本文以 src/apis/sql/CHANGELOG.md 为骨架,系统梳理@googleapis/sql(Google Cloud SQL Admin API 的官方 Node.js 客户端)从 2021 年初版到 2026 年 v9.0 的完整版本脉络,并结合仓库中的 src/apis/sql/v1beta4.ts、src/apis/sql/package.json、src/apis/sql/index.ts 等源码,深入解释每一次破坏性变更背后的 Node 运行时门槛、依赖链升级与 API 同步机制。读完本文,你将能:读懂该模块的版本时间线与升级代价,判断自己的 Node 环境是否满足要求,并掌握通过google.sql('v1beta4')快速接入 Cloud SQL 实例管理能力的最小可运行写法。

一、模块定位:Cloud SQL Admin API 的官方 Node.js 客户端

@googleapis/sql是 google-api-nodejs-client 项目中按 API 拆分发布的独立子包之一,封装的是Cloud SQL Admin API(sqladmin.googleapis.com),用于在 Node.js 侧完成 Cloud SQL 数据库实例的全生命周期管理:创建、查询、修改、删除实例,管理备份、用户、数据库、SSL 证书、导出导入与容灾切换等。模块的安装方式见 src/apis/sql/README.md:

$ npm install @googleapis/sql

在 src/apis/sql/package.json 中可以看到该包的当前元信息:版本号为9.0.1(与 CHANGELOG 最新条目一致),许可证为 Apache-2.0,唯一的运行时依赖是googleapis-common: ^9.0.0,并要求Node >= 22.0.0(engines字段)。如果你习惯使用整体包,也可以直接安装仓库根 package.json 对应的googleapis主包,再通过google.sql('v1beta4')获取客户端。

二、版本演进全景:CHANGELOG 逐版本解读

src/apis/sql/CHANGELOG.md 记录了从 v0.1.0 到 v9.0.1 的全部发布历史。整体可以划分为六个阶段,下面完整继承原文档的全部版本条目并逐段解读。

阶段一:v0.x(2021-03 ~ 2022-09)——从初版到功能积累

版本日期类型要点
0.1.02021-03 之前—模块初版基线
0.2.02021-03-18Featuresauth: 增加 workload identity federation 支持(issue #2517);sqladmin: 更新 API
0.2.12021-04-07Bug Fixessqladmin: 更新 API
0.2.22021-06-18Bug Fixessql: 更新 API
0.2.32021-06-25Bug Fixessql: 更新 API
0.3.02021-09-14Featuresauth: workload identity federation(issue #2517);sql: 更新 API(多次)
0.3.12022-09-21Bug Fixessql: 更新 API

这一阶段的特点是功能积累与上游 API 同步:几乎每次 Bug Fixes 都来自 "sql: update the API" / "sqladmin: update the API",即重新拉取 Google API Discovery 文档并重新生成客户端代码,以保证对上游 Cloud SQL Admin API 新增字段与接口的覆盖。0.3.0 同时记录了googleapis-common升级到 v5,以及构建工具 webpack 从 4 升级到 5。

阶段二:v1.0.0(2022-10-28)——首个 1.0 正式版

版本日期类型要点
1.0.02022-10-28⚠ BREAKING运行 generator,子模块开始要求 Node 12(issue #3073)

这是模块的 GA(General Availability)节点。破坏性变更来自run the generator (submodules now require Node 12):API 生成器统一把子包的 Node 最低版本提升到 12,意味着使用 v1.0.0 起需要 Node 12+ 环境。

阶段三:v1.0.x(2023)——维护期小版本

版本日期类型要点
1.0.12023-08-09Bug Fixessql: 更新 API
1.0.22023-08-25Bug Fixesdeps:googleapis-common升级到 v7
1.0.32023-10-11Bug Fixesdeps:googleapis-commonv7;sql: 更新 API

此阶段以依赖与 API 的例行更新为主,无破坏性变更。注意从 v1.0.3 开始,CHANGELOG 同时出现sql: update the API与googleapis-common的版本升级,这两条更新线在后续版本中持续并行。

阶段四:v2 / v3(2025 上半年)——Node 18 门槛

版本日期类型要点
2.0.02025-05-29⚠ BREAKING升级到 Node 18
2.0.12025-06-04Bug Fixesdeps:googleapis-common升级到 8.0.2-rc
3.0.02025-06-30⚠ BREAKING升级到 Node 18;Bug Fixes:googleapis-common8.0.2-rc
3.0.12025-07-08Bug Fixessql: 更新 API

2025 年 5 月至 6 月间,客户端库整体将 Node 最低版本从 12 提升到18(连续两个大版本都标注了相同的 BREAKING CHANGES),这是第二次运行时门槛跃迁。期间googleapis-common从 v7 进入 8.0.x 系列。

阶段五:v4.0.0 与 v5.x(2025 下半年)——重发与 API 再同步

版本日期类型要点
4.0.02025-09-16⚠ BREAKING为所有库统一重发(issue #3769);Bug Fixes: 重发、googleapis-common升级到 8.0.0
5.0.02025-10-15⚠ BREAKING本次发布包含破坏性变更;Features: 运行 generator(issue #3814)

v4.0.0 的破坏性变更来自一次仓库级 "releasing for our libraries" 统一动作,同时把googleapis-common锁定到 8.0.0。v5.0.0 则是又一次 generator 重跑,上游 API 变更带来的破坏性改动以 "This release has breaking changes." 概括,没有给出具体字段级说明——升级时建议以 API 文档与类型声明的 diff 为准。

阶段六:v6 ~ v9(2026-09)——Node 22 三连跳与稳定性修复

版本日期类型要点
5.1.02026-09-02Features运行 generator(issue #3992);Bug Fixes: 依赖升级到 Node 22
5.1.12026-09-09Bug Fixes重新支持 Node 18
6.0.02026-09-09⚠ BREAKINGNode 22 门槛 + 运行 generator
7.0.02026-09-10⚠ BREAKINGNode 22 门槛
8.0.02026-09-10⚠ BREAKINGNode 22 门槛 + 运行 generator;Bug Fixes: 重新支持 Node 18、依赖升级到 Node 22
9.0.02026-09-14⚠ BREAKING所有子包再次要求 Node 22(issue #4020);Features: 同上
9.0.12026-09-23Bug Fixessql: 更新 API

2026 年 9 月出现了密集的 5.1.x → 9.x 发布潮:先是在 5.1.0 中把依赖升级到 Node 22,随即 5.1.1 又"加回 Node 18 支持";随后 v6/v7/v8/v9 连续四个大版本以不同组合方式推进Node 22 最低版本要求(issue #4011、#4020),期间穿插 generator 重跑与依赖升级。v9.0.0 明确"Update apiary to minimum Node version of 22 again - all packages",v9.0.1 则以一次例行的sql: update the API收尾,当前源码 src/apis/sql/package.json 中的"node": ">=22.0.0"正是这一阶段成果的落点。

三、破坏性变更深度解析:Node 运行时门槛的三连跳

从 CHANGELOG 可以清晰提取出该模块的 Node 最低版本演进轨迹:

  1. Node 12:v1.0.0(2022-10-28,issue #3073),子模块统一要求;
  2. Node 18:v2.0.0 / v3.0.0(2025-05 ~ 2025-06),仓库级升级;
  3. Node 22:v6.0.0 ~ v9.0.0(2026-09,issue #4011、#4020),先是依赖先行升级,随后所有子包统一提升。

这与仓库根 package.json 中"engines": { "node": ">=22.0.0" }的当前要求完全一致。每一次门槛跃迁都对应 CHANGELOG 中的⚠ BREAKING CHANGES,含义是:升级到这些大版本后,运行环境必须满足新的 Node 版本要求,否则安装或运行时会因engines校验失败。对于仍在维护老 Node 服务(如 16/18)的团队,5.1.1 中 "add back support for node 18" 的历史条目说明 Node 18 在 2026-09 之后已被视为"尽力支持"的降级目标,而非正式承诺。

四、依赖链条演进:googleapis-common 与构建工具

除 Node 门槛外,CHANGELOG 还记录了两条依赖主线:

  • googleapis-common:v5(0.3.0)→ v7(1.0.2 / 1.0.3)→ 8.0.0(3.0.2 / 4.0.0)→ 8.0.2-rc(2.0.1 / 3.0.0)→ 9.0.0(当前,见 src/apis/sql/package.json)。googleapis-common是 google-api-nodejs-client 各子包的公共运行时层,提供getAPI、createAPIRequest、AuthPlus、GoogleConfigurable等基础设施(见 src/apis/sql/index.ts 的导入语句),其升级往往伴随 HTTP 传输、鉴权与类型系统的行为变化,这也是多个版本把deps升级列入 Bug Fixes 的原因。
  • webpack 4 → 5:记录在 v0.3.0(2021-09-14,issue #2524)。构建链升级不直接影响 API 行为,但影响子包在浏览器打包场景下的可用性与产物体积,相关配置见 src/apis/sql/webpack.config.js。

此外,多个版本标注的"run the generator"(如 v5.0.0、v5.1.0、v6.0.0、v8.0.0)对应本仓库的 API 代码生成流程:仓库通过 discovery 文档 + src/generator 模板(generator.md 有整体说明)重新生成 src/apis/sql/v1beta4.ts 这类文件,从而把上游 Cloud SQL Admin API 的新字段、新接口同步进客户端。

五、能力演进:Workload Identity Federation 与 API 同步更新

CHANGELOG 中的 Features 除了 Node 版本升级外,还有一个值得关注的能力点:auth: adds support workload identity federation(v0.2.0、v0.3.0,issue #2517)。这意味着客户端所依赖的鉴权层支持 Workload Identity Federation——即通过外部身份池/工作负载身份池换取短期 OAuth 凭证,让运行在 Google Cloud 之外的容器、CI/CD 或本地环境无需长期保存服务账号密钥即可访问 Cloud SQL Admin API。

至于反复出现的 "sql: update the API" / "sqladmin: update the API"(v0.2.0 ~ v9.0.1 共十余次),其含义是跟随上游 API 演进重新生成类型声明与方法定义:Cloud SQL Admin API 每增加一个字段(例如新增数据库版本、新的实例配置项)或调整某个接口行为,客户端就在下一次发布中同步。这也解释了为什么 CHANGELOG 中 Bug Fixes 绝大多数是 API 更新而非缺陷修复。

六、源码结构:入口、版本注册与资源全景

6.1 模块入口与版本注册

src/apis/sql/index.ts 是子包的对外入口(自动生成),核心逻辑只有几十行:

  • VERSIONS对象将版本号v1beta4映射到sql_v1beta4.Sql类;
  • sql(version | options)工厂函数通过googleapis-common的getAPI返回对应客户端实例;
  • 同时导出sql_v1beta4命名空间、AuthPlus及一组公共类型。

也就是说,当前@googleapis/sql只发布v1beta4一个 API 版本。调用方式为:

const {google} = require('googleapis'); const sql = google.sql('v1beta4');

6.2 Sql 类与九大资源组

在 src/apis/sql/v1beta4.ts 中,Sql类在构造时挂载了 9 个资源对象:

资源职责
backupRuns备份运行记录:创建、查询、删除、列举备份
databases实例内数据库的增删改查
flags查询实例可用的数据库 flags
instances实例全生命周期管理(核心资源)
operations异步操作(如创建实例)的查询与列举
projects项目级能力:维护窗口重排、外部同步等
sslCertsSSL 证书与临时客户端证书管理
tiers查询可用实例规格(tier)
users实例用户管理

6.3 instances 方法全景

以资源方法最丰富的instances为例(见 src/apis/sql/v1beta4.ts),其方法覆盖了 Cloud SQL 运维的几乎所有场景:

  • 生命周期:insert(创建)、get、list、patch/update、delete、restart;
  • 数据迁移:clone(克隆实例)、export(导出到 Cloud Storage)、import(从 SQL dump / CSV 导入)、restoreBackup(从备份恢复);
  • 高可用与复制:promoteReplica、startReplica、stopReplica、failover、demoteMaster;
  • 安全:resetSslConfig、addServerCa、listServerCas、rotateServerCa(CA 轮换);
  • 维护:truncateLog(截断 binlog)。

以instances.get的底层实现为例(src/apis/sql/v1beta4.ts),其请求会构造到https://sqladmin.googleapis.com/sql/v1beta4/projects/{project}/instances/{instance}(rootUrl默认值见 src/apis/sql/v1beta4.ts),requiredParams声明project与instance为必填,最终交给createAPIRequest发出。instances.list则额外支持filter(如state:RUNNABLE instanceType:CLOUD_SQL_INSTANCE,多个条件空格分隔、默认 AND 语义)、maxResults与pageToken分页参数(见 src/apis/sql/v1beta4.ts)。

6.4 标准请求参数

所有方法都支持一套全局标准参数(定义于StandardParameters,见 src/apis/sql/v1beta4.ts):auth(可传OAuth2Client/JWT/Compute/UserRefreshClient/GoogleAuth/ API Key 字符串)、$.xgafv(V1 错误格式)、access_token、alt(响应数据格式)、callback(JSONP)、fields(部分响应字段选择)、key(API Key)、oauth_token、prettyPrint、quotaUser、uploadType、upload_protocol。日常使用推荐通过全局google.options({auth})绑定鉴权,而非逐个方法传参。

七、核心数据模型 Schema

v1beta4.ts中定义了完整的数据模型,以下是三个最核心的 Schema(均可从源码注释获取字段语义):

  • Schema$DatabaseInstance(src/apis/sql/v1beta4.ts):实例的完整描述,包含backendType(SECOND_GEN / EXTERNAL)、databaseVersion(MySQL / PostgreSQL / SQL Server 各版本,创建后不可变更)、instanceType(CLOUD_SQL_INSTANCE / ON_PREMISES_INSTANCE / READ_REPLICA_INSTANCE)、state(RUNNABLE / SUSPENDED / PENDING_CREATE / MAINTENANCE / FAILED 等)、ipAddresses、masterInstanceName、replicaNames、region(创建后不可变更)、settings、serverCaCert等。
  • Schema$Settings(src/apis/sql/v1beta4.ts):实例的用户配置,包括activationPolicy(ALWAYS / NEVER)、availabilityType(ZONAL / REGIONAL 高可用)、backupConfiguration(每日备份)、databaseFlags(启动参数)、dataDiskSizeGb(数据盘大小,最小 10GB)、dataDiskType(PD_SSD 默认 / PD_HDD)、ipConfiguration、maintenanceWindow、pricingPlan(PER_USE / PACKAGE)、settingsVersion(update 时必须携带最新值以处理并发)、storageAutoResize(默认 true)、storageAutoResizeLimit(0 表示无上限)、tier(如db-n1-standard-1)、userLabels等。
  • Schema$Operation(src/apis/sql/v1beta4.ts):异步操作对象,operationType可为 CREATE / DELETE / UPDATE / RESTART / IMPORT / EXPORT / BACKUP_VOLUME / RESTORE_VOLUME / CREATE_USER / DELETE_USER / CREATE_DATABASE / DELETE_DATABASE;status可为 PENDING / RUNNING / DONE;error携带OperationErrors。实例的创建、导入导出、备份恢复等操作都会先返回 Operation,再通过sql.operations.get轮询状态。

此外源码还包含Schema$BackupRun(备份运行,src/apis/sql/v1beta4.ts)、Schema$Database、Schema$Flag、Schema$SslCert、Schema$Tier、Schema$User等模型,与 9 大资源一一对应。

八、实战:最小可运行接入示例

综合 src/apis/sql/v1beta4.ts 各方法内嵌的示例模板,下面是一个基于应用默认凭据(ADC)+ cloud-platform scope的实例列表示例,可直接替换项目 ID 运行:

const {google} = require('googleapis'); const sql = google.sql('v1beta4'); async function main() { // Scopes 既可以写成数组,也可以写成空格分隔的字符串 const auth = new google.auth.GoogleAuth({ scopes: [ 'https://www.googleapis.com/auth/cloud-platform', 'https://www.googleapis.com/auth/sqlservice.admin', ], }); // 获取鉴权客户端并绑定到后续所有调用 const authClient = await auth.getClient(); google.options({auth: authClient}); // 列举指定项目下的所有 Cloud SQL 实例 const res = await sql.instances.list({ project: 'my-project-id', // 可选:filter: 'state:RUNNABLE instanceType:CLOUD_SQL_INSTANCE', // 可选:maxResults: 100, }); console.log(res.data); } main().catch(e => { console.error(e); throw e; });

运行前需要满足的前提(对应前面章节的版本约束):

  • Node 环境>= 22(由 src/apis/sql/package.json 的engines决定);
  • 已启用 Cloud SQL Admin API 并完成 ADC 初始化(例如gcloud auth application-default login,或为服务账号配置工作负载身份池);
  • 使用全局包时通过google.sql('v1beta4')获取客户端,使用独立子包时以require('@googleapis/sql')的方式导入(子包同样导出sql工厂与sql_v1beta4命名空间,见 src/apis/sql/index.ts)。

九、升级与版本选择建议

结合 CHANGELOG 的破坏性变更时间线,给出以下实操建议:

  1. 先核对 Node 版本再升级大版本:若当前运行在 Node 18,应停留在 5.1.x 或明确接受"尽力支持"的降级状态;升级到 v6.0.0 及以上前,请将运行时迁移到 Node 22。
  2. 把run the generator视为例行同步:此类版本(v5.0.0、v5.1.0、v6.0.0、v8.0.0)通常伴随上游 API 的字段级变化,升级后建议用仓库中的 src/apis/sql/v1beta4.ts 类型声明与本项目实际使用的字段做一次 diff 检查。
  3. 善用settingsVersion处理并发更新:调用instances.patch/update时携带最新settingsVersion,避免并发修改互相覆盖(字段语义见 src/apis/sql/v1beta4.ts)。
  4. 跟踪后续变更:本仓库只读,后续版本更新可通过npm install @googleapis/sql获取并在本地 node_modules 中查阅最新 CHANGELOG;仓库内的 src/apis/sql/CHANGELOG.md 则始终保留当前快照对应的完整历史,可作为升级评估的权威依据。
  • 后端

【免费下载链接】google-api-nodejs-client

Google's officially supported Node.js client library for accessing Google APIs. Support for authorization and authentication with OAuth 2.0, API Keys and JWT (Service Tokens) is included.

项目地址:https://gitcode.com/gh_mirrors/go/google-api-nodejs-client
点击查看免费下载
上一篇:HsMod炉石插件新手教程:从换肤到酒馆战棋上分的60+功能指南
下一篇:Firebase JS SDK(@firebase/ai)GenerateContentCandidate 接口详解:候选回复的结构、字段语义与源码级处理机制

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询