本文档主要介绍PDSClient类的用法,包括构造方法,公共方法和事件监听的用法。
PDSClient构造方法
创建一个可以调用所有PDS API的实例。
const client = new PDSClient(config, context);
参数说明
字段 | 类型 | 是否必选 | 说明 |
config | IClientParams | 是 | 请看下面的 |
context | IContext | 否 | 执行环境上下文。详情请看 |
IClientParams字段说明
字段 | 类型 | 是否必选 | 说明 |
token_info | TokenInfo | 否 | 通过 OAuth 登录或者JWT App 签发的 |
api_endpoint | string | 是 | PDS API 地址,一般构成为: |
auth_endpoint | string | 是 | PDS Auth 地址,一般构成为: |
path_type | string | 否 | domain 的存储路径类型, 可选值: |
version | string | 否 | 版本号,目前仅支持: |
refresh_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字段说明
在Web浏览器环境或者在Node.js环境下,IContext可以不传。
但是在 Electron 的渲染进程中,SDK 会识别成浏览器环境,需要额外传入 Node.js 环境的 Context。可以在Node.js环境下(Electron主进程)从 SDK 中导出到 preload 脚本供渲染进程调用。
字段 | 类型 | 是否必选 | 说明 |
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。 |
返回
无
postAPI方法
基础 API 服务调用方法。基于此方法,可以封装出调用任何 PDS API 方法。
API 参考:CreateFile - 创建文件或文件夹
const result = await client.postAPI(pathname, data={}, options={})
参数说明
字段 | 类型 | 是否必选 | 说明 |
pathname | string | 是 | 调用 API 服务的 pathname。 对于标准模式,比如 API 是 对于托管模式,比如API接口是 |
data | object | 否 | 调用 |
options | AxiosRequestConfig | 否 | 其他参数。由于基于axios 封装的,这个 |
返回
字段 | 类型 | 说明 |
result | object | 接口返回的结果数据。 |
举例
let {items =[]} = await client.postAPI('/file/list', {
drive_id: '1050',
parent_file_id: 'root'
})
console.log(items)
postAuth方法
基础 Auth 服务调用方法。基于此方法,可以封装出调用任何 PDS Auth Endpoint 方法。
API 参考:GetLinkInfoByUserId - 根据用户ID获取账号信息
const result = await client.postAuth(pathname, data={}, options={})
参数说明
字段 | 类型 | 是否必选 | 说明 |
pathname | string | 是 | 调用 Auth 服务的 pathname。 比如 API 是 |
data | object | 否 | 调用 pathname 对应接口的参数 JSON。 |
options | object | 否 | 其他参数。由于基于axios封装的,这个options 对应 Axios的 request config。 |
返回
字段 | 类型 | 说明 |
result | object | 接口返回的结果数据。 |
事件监听
目前仅支持 error
事件。
error事件
client.on('error', (error, req_opt)=> {
console.log('Error', error)
console.log('Request Options:', req_opt)
})
回调函数的参数说明
字段 | 类型 | 说明 |
error | PDSError | 错误信息。类型是 |
req_opt | AxiosRequestConfig | 请求的options。由于基于axios封装的,这个options 对应 Axios的 request config。 |
PDSError字段说明
字段 | 类型 | 说明 |
status | number | 服务端报错返回的 |
code | string | 服务端报错返回的 |
message | string | 服务端报错返回的 |
reqId | string | 服务端报错返回的 |
stack | string | 调试用的 error stack |