createOssSignedUploadApi
创建 OSS 签名上传 API 客户端:COS STS 与 signed-upload-url。
前置依赖
依赖参数
| 参数名 | 类型 | 说明 |
|---|---|---|
deps.buildApiUrl | (path) => string | API 路径拼接 |
deps.fetch | FetchFunction | 全局 fetch |
deps.waitForPendingTokenRefresh | () => Promise<void> | 等待 token 刷新 |
deps.createAuthRequestInit | (init) => RequestInit | 附加 Authorization |
deps.fetchWithAuthRecovery | (request) => Promise<Response> | 401 恢复重试 |
deps.parseErrorAndThrow | (res, ctx?) => Promise<never> | 非 2xx 错误解析 |
deps.doFetch | <T>(path, options?) => Promise<T> | JSON API 请求 |
deps.buildErrorContext | 可选 | 错误上下文 |
deps.reportApiFailure | 可选 | 可观测性上报 |
函数签名
typescript
function createOssSignedUploadApi<TContext>(
deps: CreateOssSignedUploadApiDeps<TContext>,
): OssSignedUploadApi参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
deps | CreateOssSignedUploadApiDeps | 是 | API 客户端环境依赖 |
返回值
| 类型 | 说明 |
|---|---|
OssSignedUploadApi | 含 tryRequestCosStsCredential、requestOssSignedUploadUrl、fetchOssSignedUploadUrl |
OssSignedUploadApi 方法
| 方法 | 说明 |
|---|---|
tryRequestCosStsCredential | 申请 COS STS;HTTP 400 返回 null |
requestOssSignedUploadUrl | 通过 doFetch 申请 signed-upload-url |
fetchOssSignedUploadUrl | 手动 fetch 并校验 signedUrl / publicUrl |
工作原理
- STS 与 signed-upload-url 均走 token + 401 恢复。
requestOssSignedUploadUrl复用doFetch自动解包{ data }。fetchOssSignedUploadUrl在响应缺字段时抛出明确错误。