本文檔主要介紹PDSClient類的用法,包括構造方法,公用方法和事件監聽的用法。
PDSClient構造方法
建立一個可以調用所有PDS API的執行個體。
const client = new PDSClient(config, context);參數說明
欄位 | 類型 | 是否必選 | 說明 |
config | IClientParams | 是 | 請看下面的 |
context | IContext | 否 | 執行環境內容。詳情請看 |
IClientParams欄位說明
欄位 | 類型 | 是否必選 | 說明 |
token_info | TokenInfo | 否 | 通過 OAuth 登入或者JWT App 簽發的 |
api_endpoint | string | 是 | PDS API 地址,一般構成為: |
auth_endpoint | string | 是 | PDS Auth 地址,一般構成為: |
path_type | string | 否 | domain 的儲存路徑類型, 可選值: |
version | string | 否 | 版本號碼,目前僅支援: |
refresh_token_fun | Function | 否 |
|
api_endpoint和auth_endpoint至少傳一個。
TokenInfo欄位說明
欄位 | 類型 | 是否必選 | 說明 |
access_token | string | 是 | 代表使用者身份的 |
refresh_token | string | 否 | 重新整理 |
expire_time | string | 否 |
|
expires_in | string | 否 |
|
token_type | string | 否 |
|
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 | 否 | 在 |
platform | string | 否 | 即 取值範圍:" |
os | object | 否 |
|
fs | object | 否 |
|
path | object | 否 |
|
cp | object | 否 |
|
http | object | 否 |
|
https | object | 否 |
|
crypto | object | 否 |
|
worker_threads | object | 否 |
|
如何擷取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
}
});封裝重新整理
token方法。請看 Token - 擷取存取權杖
基礎公用方法
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 是 對於託管模式,比如API介面是 |
data | object | 否 | 調用 |
options | AxiosRequestConfig | 否 | 其他參數。由於基於axios 封裝的,這個 |
返回
欄位 | 類型 | 說明 |
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 是 |
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 | 錯誤資訊。類型是 |
req_opt | AxiosRequestConfig | 請求的options。由於基於axios封裝的,這個options 對應 Axios的 request config。 |
PDSError欄位說明
欄位 | 類型 | 說明 |
status | number | 服務端報錯返回的 |
code | string | 服務端報錯返回的 |
message | string | 服務端報錯返回的 |
reqId | string | 服務端報錯返回的 |
stack | string | 調試用的 error stack |