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 信息。

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

字段

类型

必须

说明

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。

返回

无

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。