全部產品
Search
文件中心

Drive and Photo Service:PDSClient

更新時間:Dec 23, 2025

本文檔主要介紹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