本文档主要介绍 PDSClient
类的用法,包括构造方法,公共方法和事件监听的用法。
PDSClient 构造方法
创建一个可以调用所有 PDS API 的实例。
const client = new PDSClient(config, context);
参数说明
字段 | 类型 | 必须 | 说明 |
config | IClientParams | 是 | 请看下面的 |
context | IContext | 执行环境上下文。详情请看 |
IClientParams 字段说明
字段 | 类型 | 必须 | 说明 |
token_info | TokenInfo | 通过 OAuth 登录或者JWT App 签发的 | |
share_token | string | 分享token。 | |
api_endpoint | string | Y1 | PDS API 地址,一般构成为: |
path_type | string | domain 的存储路径类型, 目前仅支持: | |
version | string | 版本号,目前仅支持: | |
refresh_token_fun | Function |
| |
refresh_share_token_fun | Function |
|
api_endpoint
和auth_endpoint
至少传一个。
TokenInfo字段说明
字段 | 类型 | 必须 | 说明 |
access_token | string | 是 | 代表用户身份的 |
refresh_token | string | 刷新 | |
expire_time | string |
| |
expires_in | string |
| |
token_type | string |
| |
user_id | string | 当前用户唯一标识。 | |
role | string | 当前用户角色。 | |
...其他字段 | 其他字段请看Token - 获取访问令牌。 |
IContext 字段说明
字段 | 类型 | 必须 | 说明 |
isNode | boolean | 是 | 是否是Node.js环境。 |
Axios | object | 是 | 详见axios模块。 |
AxiosNodeAdapter | object | 在 | |
platform | string | 即 取值范围:" | |
os | object |
| |
fs | object |
| |
path | object |
| |
cp | object |
| |
http | object |
| |
https | object |
| |
crypto | object |
| |
worker_threads | object |
|
如何获取 Token
token
的获取可以有多种方案,根据应用类型,具体获取方法请看:应用概述。
如何刷新 Token
access_token
的有效期是 2 小时, refresh_token
的有效期是 7 天。在 refresh_token
有效期内,不管access_token
是否失效,都是可以刷新 token 的。
刷新 token
后, 旧的 access_token
和 refresh_token
失效。
具体步骤:
在初始化
PDSClient
的时候,配置refresh_token_fun
。
const client = new PDSClient({
refresh_token_fun: async ()=>{
// 此处调用后端刷新token。 my_refresh_token_fun 为自己封装的刷新token方法。
const token_info = await my_refresh_token_fun()
return token_info
}
});
封装刷新
token
方法。请看 Token - 获取访问令牌
基础公共方法
setToken 方法
如果不在构造函数传入 token_info
,可以调用此方法传入。
确保 client
有效的 token_info
,才能调用后端接口。
client.setToken(token_info)
参数说明
字段 | 类型 | 必须 | 说明 |
token_info | TokenInfo | 是 | 传入token_info。 |
返回
无
setShareToken 方法
调用分享相关接口时,需要用到此方法。
如果不在构造函数传入 share_token
,可以调用此方法传入。
确保 client
有效的 share_token
,才能调用后端接口。
client.setShareToken(share_token)
参数说明
字段 | 类型 | 必须 | 说明 |
share_token | string | 是 | 传入share_token。 |
返回
无
postAPI 方法
基础 API 服务调用方法。基于此方法,可以封装出调用任何 PDS API 方法。
const result = await client.postAPI(pathname, data={}, options={})
请求参数中的 options: IPDSRequestConfig 基于 axios 的 request config 封装,详情请看:AxiosRequestConfig。
参数说明
字段 | 类型 | 必须 | 说明 |
pathname | string | 是 | 调用 API 服务的 pathname。 比如 API 是 |
data | object | 调用 | |
options | IPDSRequestConfig | 其他请求参数。 |
返回
字段 | 类型 | 必须 | 说明 |
result | object | 接口返回的结果数据。 |
举例
let {items =[]} = await client.postAPI('/file/list', {
drive_id: '1050',
parent_file_id: 'root',
})
console.log(items)
事件监听
目前仅支持 error
事件。
error 事件
client.on('error', (error, req_opt)=> {
console.log('Error', error)
console.log('Request Options:', req_opt)
})
回调函数的参数说明
字段 | 类型 | 必须 | 说明 |
error | PDSError | 是 | 错误信息。类型是 |
req_opt | IPDSRequestConfig | 请求参数。 |
PDSError 字段说明
字段 | 类型 | 必须 | 说明 |
status | number | 服务端报错返回的 | |
code | string | 服务端报错返回的 | |
message | string | 是 | 服务端报错返回的 |
reqId | string | 服务端报错返回的 | |
stack | string | 调试用的 error stack | |
type | string | 可选值: |