本文档主要介绍 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  | 可选值:  |