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

PDSClient 构造方法

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

const client = new PDSClient(config, context);

参数说明

字段

类型

必须

说明

config

IClientParams

请看下面的 IClientParams 字段说明

context

IContext

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

IClientParams 字段说明

字段

类型

必须

说明

token_info

TokenInfo

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

share_token

string

分享token。

api_endpoint

string

Y1

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

path_type

string

domain 的存储路径类型, 目前仅支持:StandardMode, 默认:StandardMode

version

string

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

refresh_token_fun

Function

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

refresh_share_token_fun

Function

share_token 过期时回调方法,该方法需要返回Promise<string>,返回新的 share_token

  • 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 字段说明

字段

类型

必须

说明

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。

返回

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 是 /v2/file/list, 此处传入 /file/list 即可。

data

object

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

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

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

req_opt

IPDSRequestConfig

请求参数。

PDSError 字段说明

字段

类型

必须

说明

status

number

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

code

string

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

message

string

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

reqId

string

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

stack

string

调试用的 error stack

type

string

可选值:ClientError, ServerError