@cloudbase/cloud-api
云 API 3.0 请求封装,仅适用于 Node,100% 测试覆盖率。

使用
支持 API 秘钥或临时秘钥鉴权。
import { CloudApiService } from '@cloudbase/cloud-api'
const service = new CloudApiService({
service: 'tcb',
credential: {
secretId: 'xxx',
secretKey: 'xxx',
token: 'xxx'
}
})
service.request('DescribeEnvs').then(console.log)
或
const { CloudApiService } = require('@cloudbase/cloud-api')
const service = new CloudApiService({
service: 'tcb',
credential: {
secretId: 'xxx',
secretKey: 'xxx'
}
})
service.request('DescribeEnvs').then(console.log)
结果
{
EnvList: [],
RequestId: '09a1ece6-7cb1-4a8f-b8b6-e4cc066d1fbe'
}
异步 credential
在某些情况下,你的 credential 可能是异步获取。你可以配置 getCredential 方法,异步传递 credential 信息。建议结合 getInstance() 方法使用,避免重复请求获取 credential 信息。
const tcbService = CloudApiService.getInstance({
service: 'tcb',
getCredential: async () => {
return new Promise(resolve => {
setTimeout(() => {
resolve({})
}, 1000)
})
}
})
const res = await tcbService.request('DescribeEnvs')
request()
定义:async request(action: string, data: Record<string, any> = {}, method: 'POST' | 'GET' = 'POST')
使用 request 方法发起请求。
getInstance()
getInstance() 静态方法内部是一个工厂函数,会根据服务类型缓存实例,能有效避免重复初始化实例带来的开销
const tcbService = CloudApiService.getInstance({
credential,
service: 'tcb'
})
const res = await tcbService.request('DescribeEnvs', {
empty: null,
b: undefined
})
清除内存中的 credential 缓存
在某些特殊的情况下,你可能需要在不退出进程的情况下重载 credential。你可以使用 clearCredentialCache() 方法清除内存中的 credential 缓存,使得下次请求前通过 getCredential 函数重新获取 credential
const tcbService = new CloudApiService({
service: 'tcb',
getCredential: () => {
return new Promise(resolve => {
setTimeout(() => {
resolve(credential)
}, 1000)
})
}
})
const res = await tcbService.request('DescribeEnvs')
tcbService.clearCredentialCache()
const res = await tcbService.request('DescribeEnvs')
选项
下面是 TS 定义
interface ServiceOptions {
service: string
version?: string
proxy?: string
timeout?: number
baseParams?: Record<string, any>
credential?: Credential
getCredential?: () => Promise<Credential> | Credential
}
interface Credential {
secretId: string
secretKey: string
token?: string
}