googleapis / googleapis/google-cloud-node

refactor!: Revamp `apiEndpoint`

未关闭
#7,828 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
api: common priority: p2 type: feature request
主要语言
TypeScript
星标
3.2k
派生
712
平均合并
2 天 9 小时
30 天内合并 PR
104

描述

With the advent of TPC and PSC, there’s a lot of complexity with apiEndpoints. To improve, we should:
- expose an `async Storage#getEndpoint()` method
- make the `apiEndpoint` property private
- remove the `useAuthWithCustomEndpoint` parameter/property
- remove the internal `customEndpoint` parameter/property

Additionally, if `STORAGE_EMULATOR_HOST` is detected and used the [`PassThrough`](https://github.com/googleapis/google-auth-library-nodejs/blob/b070ffbfeb35a7f4552e86bf1840645096951b58/src/auth/passthrough.ts#L19-L26) `AuthClient` should be used by default (which can be overwritten via the existing `authClient` parameter) - removing the need for the `useAuthWithCustomEndpoint` parameter.

This will greatly clean-up the code base as:
- Customers will not be required to manually provide the `universeDomain` - as we can determine it asynchronously via `GoogleAuth#getUniverseDomain`. This is a **major** convenience for TPC customers.
- We can offer a predictable, secure experience by not disabling auth by default when an `apiEndpoint` has been provided
- Classes will no longer have to distinguish between auth and non-auth contexts - we can simply use `auth` everywhere uniformly

Related:
- https://github.com/googleapis/nodejs-storage/issues/2400
- https://github.com/googleapis/nodejs-storage/issues/2092
- https://github.com/googleapis/google-auth-library-nodejs/pull/1771

We this change we can remove the following:

https://github.com/googleapis/nodejs-common/blob/0b4380af5e347ef0855d1e0ad45e055a2a9c6120/src/util.ts#L140-L148

https://github.com/googleapis/nodejs-common/blob/0b4380af5e347ef0855d1e0ad45e055a2a9c6120/src/util.ts#L766-L777

贡献指南

打开贡献指南

调研方向

首先跟踪 Storage API 及其 apiEndpoint、useAuthWithCustomEndpoint 和 customEndpoint 参数与属性。阅读链接的 nodejs-common src/util.ts 范围,以及相关的 storage issues 和 auth-library pull request,以了解背景。完成标准是暴露 getEndpoint()、将 apiEndpoint 设为 private、移除过时参数,并让 emulator auth 默认使用 PassThrough,同时 authClient 仍可被覆盖。

由索引模型根据 Issue 内容生成。

评估

技术栈
gcp, nodejs, typescript
领域
api, backend, cloud
Issue 类型
重构
难度
5/5
预计耗时
一周以上
活跃度
停滞
描述清晰度
基本清楚
新手友好度
25/100

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。