PDSClient

更新时间:
复制 MD 格式

本文档主要介绍PDSClient类的用法,包括构造方法,公共方法和事件监听的用法。

PDSClient构造方法

创建一个可以调用所有PDS API的实例。

const client = new PDSClient(config, context);

参数说明

字段

类型

是否必选

说明

config

IClientParams

是

请看下面的 IClientParams 字段说明

context

IContext

否

执行环境上下文。详情请看 IContext 介绍。

IClientParams字段说明

字段

类型

是否必选

说明

token_info

TokenInfo

否

通过 OAuth 登录或者JWT App 签发的 token 信息。

api_endpoint

string

是

PDS API 地址,一般构成为:https://{domainId}.api.aliyunpds.com。

auth_endpoint

string

是

PDS Auth 地址,一般构成为:https://{domainId}.api.aliyunpds.com。

path_type

string

否

domain 的存储路径类型, 可选值:StandardMode | HostingMode, 默认:StandardMode。

version

string

否

版本号,目前仅支持:v2。默认 v2。

refresh_token_fun

Function

否

token 过期时回调方法,该方法需要返回Promise<TokenInfo>。

  • api_endpoint 和 auth_endpoint 至少传一个。

TokenInfo字段说明

字段

类型

是否必选

说明

access_token

string

是

代表用户身份的 JWT。一般有效期2小时。

refresh_token

string

否

刷新 token,可用于刷新过期的 access_token。

expire_time

string

否

access_token 的有效时间。一般为签发token 2小时后的时间。

expires_in

string

否

access_token过期时间,单位秒。如:7200

token_type

string

否

access_token 类型,默认:Bearer

user_id

string

否

当前用户唯一标识。

role

string

否

当前用户角色。

...其他字段

其他字段请看获取访问令牌。

IContext字段说明

重要

在Web浏览器环境或者在Node.js环境下,IContext可以不传。

但是在 Electron 的渲染进程中,SDK 会识别成浏览器环境,需要额外传入 Node.js 环境的 Context。可以在Node.js环境下(Electron主进程)从 SDK 中导出到 preload 脚本供渲染进程调用。

字段

类型

是否必选

说明

isNode

boolean

是

是否是Node.js环境。

Axios

object

是

详见axios模块。

AxiosNodeAdapter

object

否

在Node.js环境下导出JS SDK中的Context中的 AxiosNodeAdapter。

platform

string

否

即Node.js中的process.platform。

取值范围:"win32", "darwin","linux" 。

os

object

否

Node.js 原生的 os 模块

fs

object

否

Node.js 原生的 fs 模块

path

object

否

Node.js 原生的path模块

cp

object

否

Node.js 原生的child_process模块。

http

object

否

Node.js 原生的http模块

https

object

否

Node.js 原生的https模块

crypto

object

否

Node.js 原生的crypto模块

worker_threads

object

否

Node.js 原生的worker_threads模块

如何获取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
   }
});

基础公共方法

setToken方法

如果不在构造函数传入 token_info,可以调用此方法传入。

确保 client 有效的 token_info,才能调用后端接口。

client.setToken(token_info)

参数说明

字段

类型

是否必选

说明

token_info

TokenInfo

是

传入token_info。

返回

无

postAPI方法

基础 API 服务调用方法。基于此方法,可以封装出调用任何 PDS API 方法。

API 参考:创建文件或文件夹

const result = await client.postAPI(pathname, data={}, options={})

参数说明

字段

类型

是否必选

说明

pathname

string

是

调用 API 服务的 pathname。

对于标准模式,比如 API 是 /v2/file/list, 此处传入 /file/list 即可。

对于托管模式,比如API接口是 /v2/hosting/file/list, 也是传入 /file/list 即可。

data

object

否

调用 pathname 对应接口的参数 JSON。

options

AxiosRequestConfig

否

其他参数。由于基于axios 封装的,这个options 对应 Axios的 request config。

返回

字段

类型

说明

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 参考:根据用户ID获取账号信息

const result = await client.postAuth(pathname, data={}, options={})

参数说明

字段

类型

是否必选

说明

pathname

string

是

调用 Auth 服务的 pathname。

比如 API 是 /v2/account/cancel_link, 此处传入 /account/cancel_link 即可。

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

错误信息。类型是 PDSError, 常规包含 {code,message,reqId,status} 几个字段。

req_opt

AxiosRequestConfig

请求的options。由于基于axios封装的,这个options 对应 Axios的 request config。

PDSError字段说明

字段

类型

说明

status

number

服务端报错返回的 http status。如果是客户端报错此项为空。

code

string

服务端报错返回的code字段。如果是客户端报错此项一般为 ClientError

message

string

服务端报错返回的message字段。

reqId

string

服务端报错返回的requestId字段。如果是客户端报错则此项为空

stack

string

调试用的 error stack