

云函數(shù)可在系統(tǒng)主動觸發(fā)后,執(zhí)行相關(guān)邏輯。在云函數(shù)中可進行過網(wǎng)絡(luò)請求,實現(xiàn)與第三方數(shù)據(jù)交互。
云函數(shù)可直接在功能流程的“API-自定義api”中進行調(diào)用。
云函數(shù)暫不支持直接在編程步驟中調(diào)用,可通過單獨實現(xiàn)一個功能調(diào)用云函數(shù),編程調(diào)用該功能的方式進行實現(xiàn)。
代碼如下: 復(fù)制代碼
async function run($input,$output,$modules = modules){
//$input:輸入模塊,云函數(shù)的輸入?yún)?shù) json
//$output:輸出模塊,云函數(shù)的輸出參數(shù) json
//$modules:功能模塊,用于數(shù)據(jù)處理
}
可通過輸入模塊獲取輸入?yún)?shù)值 ,與配置頁面的輸入配置參數(shù)對應(yīng)
示例:
代碼如下: 復(fù)制代碼
async function run($input,$output,$modules = modules){
//獲取輸入?yún)?shù) name 的值
let name = $input.name;
}
可通過輸出模塊輸出需要的參數(shù),與配置頁面的輸出配置參數(shù)對應(yīng)
示例:
代碼如下: 復(fù)制代碼
async function run($input, $output, $modules = modules) {
//輸出參數(shù) name 的值為 "bnocode"
$output.name = "bnocode";
//此時$output ={name:"bnocode"}
}
編程步驟中的$plugin可使用的內(nèi)容$modules均可使用。例如編程步驟中$plugin.data.saveData()等同$modules.data.saveData()
更多$plugin內(nèi)容請參考白碼后端編程文檔
在此基礎(chǔ)上還添加了其他接口
引入exceljs庫,可實現(xiàn)對excel的編輯操作并下載excel。
引入uuid庫,可以獲取uuid
固定寫法如下
代碼如下: 復(fù)制代碼
async function run($input,$output,$modules = modules){
const uuid = $modules.lib.uuid;
let guid = uuid.v4();
guid = guid.replace(/\-/g, "");
$output.uuid = guid;//輸出uuid
}
引入Buffer庫,可實現(xiàn)數(shù)據(jù)轉(zhuǎn)Buffer的效果并實現(xiàn)數(shù)據(jù)上傳
此方法用于發(fā)起網(wǎng)絡(luò)請求,可了解egg的curl相關(guān)文檔。
框架內(nèi)置基礎(chǔ)對象 - Egg (eggjs.org)
參數(shù)名 | 類型 | 是否必須 | 說明 |
url | string | 是 | 請求地址 |
requestOption | object | 是 | 請求配置 |
requestOption.method | string | 否 | 請求方式:post 或 get,默認get |
requestOption.headers | string | 否 | 請求頭部配置 |
requestOption.dataType | string | 是 | 響應(yīng)數(shù)據(jù)格式 |
requestOption.data | object | 否 | 請求內(nèi)容,post請求時需要 |
示例:
代碼如下: 復(fù)制代碼
async function run($input, $output, $modules = modules) {
let url = "";
let resp = await $modules.curl(url, {
method: "post",
headers: {},
dataType: "json",
data: {}
});
$output.resp = resp;
}
密碼工具庫,包含常見的加密技術(shù),參考 常見加密技術(shù)
webhook一般用于接收第三方推送的數(shù)據(jù),第三方通過向webhook的路徑推送內(nèi)容,webhook被動觸發(fā)后根據(jù)推送內(nèi)容進行響應(yīng)。
代碼如下: 復(fù)制代碼
async function hook($req = request, $resp = response, $modules = modules) {
//$req:請求對象,可獲取到請求內(nèi)容
//$resp:響應(yīng)對象,可將 webhook 的處理結(jié)果返回到請求方
//$modules:功能模塊,用于數(shù)據(jù)處理
}
代碼如下: 復(fù)制代碼
async function hook($req = request, $resp = response, $modules = modules) {
let query=$req.query;//get請求中,url上的參數(shù)內(nèi)容
let body=$req.body;//post請求內(nèi)容
}
用于將響應(yīng)內(nèi)容返回給請求方
示例:
代碼如下: 復(fù)制代碼
async function hook($req = request, $resp = response, $modules = modules) {
$resp.body = {
code: 0,
msg: "success"
}
}
同云函數(shù)。
云函數(shù)與webhook中均可使用,為了方便,本文均以云函數(shù)為例。
代碼如下: 復(fù)制代碼
async function run($input, $output, $modules = modules) {
let secret = "";//加密密鑰
let dataStr = "";//需要加密的內(nèi)容字符串
//加密
const crypto = await $modules.crypto;
let hmac = crypto.createHmac("sha256", secret);
hmac.update(dataStr);
//加密后簽名
let sign = hmac.digest("hex");
}
代碼如下: 復(fù)制代碼
async function run($input, $output, $modules = modules) {
let str = "";//需要加密的內(nèi)容字符串
//加密
const crypto = $modules.crypto;
let sha256 = crypto.createHash('sha256');
sha256.update(str);
//加密后簽名
let mac = sha256.digest("hex");
}
代碼如下: 復(fù)制代碼
async function run($input, $output, $modules = modules) {
let str = "";//需要加密的內(nèi)容字符串
//加密
const crypto = $modules.crypto;
const hash = crypto.createHash('md5');
let result = hash.update(str).digest('hex');//加密
let upperCase = result.toLocaleUpperCase();//轉(zhuǎn)大寫,如果需要
}
代碼如下: 復(fù)制代碼
async function run($input, $output, $modules = modules) {
let str = "";//需要加密的內(nèi)容字符串
//加密
const buffer = $modules.lib.Buffer.from(str);
let base64 = buffer.toString("base64");
}
代碼如下: 復(fù)制代碼
async function run($input, $output, $modules = modules) {
//jwt庫,https://www.npmjs.com/package/jsonwebtoken
const jwt = await $modules.lib.jwt;
let json = {};//需要加密的內(nèi)容
let hmac="";//密鑰
//加密
let sign = jwt.sign(json,hmac);
//解密
let decoded = jwt.verify(sign, hmac);
}