PDSClient

本文档主要介绍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_endpointauth_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

当前用户角色。

...其他字段

其他字段请看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

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_tokenrefresh_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 参考:CreateFile - 创建文件或文件夹

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 参考:GetLinkInfoByUserId - 根据用户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