本文將為您介紹如何創建Aviator函數。
前提條件
已創建完成業務流程,詳情請參見創建并管理業務流程。
已購買獨享數據服務資源組,詳情請參見新增和使用獨享數據服務資源組。
說明Aviator函數需要運行在獨享數據服務資源組中。
背景信息
您可以在數據服務中創建函數、測試函數、發布函數,發布后的函數可被進一步關聯至API,作為API的過濾器,對API的請求參數或返回結果進行加工處理,從而實現API的復雜查詢需求,靈活適配各類業務場景。常見場景的代碼示例請參見:使用Aviator函數作為過濾器的最佳實踐。
使用限制
Aviator函數需要運行在獨享數據服務資源組中。
當使用函數作為API過濾器時,前置過濾器和后置過濾器的函數類型需要保持一致,即:均選擇Aviator函數類型或Python函數類型。暫不支持對同一API的前置和后置過濾器選擇不同的函數類型。
注意事項
基于安全和性能等因素的評估,Aviator函數需要運行在獨享數據服務資源組中。因此:
當您編輯、測試函數時,需要對函數綁定獨享數據服務資源組。詳情請參見管理函數。
當您在API開發時啟用了過濾器并關聯了目標函數,需要對API綁定獨享數據服務資源組。詳情請參見通過向導模式生成API。
函數結構說明
對于Aviator函數,系統自帶的模板函數如下。Aviator函數語法參考請參見Aviator函數語法。
## --- AviatorScript ---
## $0: the default name of the input param.
## Expressions must be separated by the semicolon ";".
## Example 1:
## $0.a: Get the attribute "a" from the input param "$0".
## $0.b[index]: Get the index of the array "b" from the input param "$0". The index cannot be an expression or a variable.
## Example 2:
## Input: {"keyA":[1,2],"keyB":"value"}
## Function: $0.keyA[0]=3; $0.keyB="new_value"; return $0;
## Output: {"keyA":[3,2],"keyB":"new_value"}
return $0;
您可以基于該函數進行修改。
Aviator函數的默認入參名稱是
$0
,且不可更改,您可以通過$0
來獲取函數的整體輸入。函數的輸入內容需要按照JSON形式。在數據服務中,函數的作用是作為API過濾器來處理請求參數和返回結果,并且請求參數的定義形式是單層JSON結構(深度為1),返回結果的定義形式是多層JSON結構(深度為N),因此函數的輸入內容也需要按照JSON形式,即:
$0
代表著一段JSON形式的數據內容。當函數被作為API的前置過濾器時,系統會將API請求參數或上個函數的輸出結果,從
key-value map
轉換為JSON形式,并使用該JSON對$0
參數進行傳參,且JSON中的value僅支持字符串類型。當函數被作為API的前置過濾器時,函數的輸出結果為
key-value map
。該輸出結果將作為SQL語句執行入參,因此僅支持輸出深度為1的key-value map
。
進入數據服務頁面
登錄DataWorks控制臺,切換至目標地域后,單擊左側導航欄的 ,在下拉框中選擇對應工作空間后單擊進入數據服務。
創建函數
在服務開發頁面,鼠標懸停至圖標,單擊 。
您也可以找到相應的業務流程,右鍵單擊函數,選擇
。在新建Aviator函數對話框中,配置各項參數。
參數
描述
函數名稱
自定義函數的名稱,不能超過256個字符。
函數模板
僅支持AviatorScript Standard v1。
函數描述
對函數進行簡單描述,不得超過512個字符。
目標文件夾
選擇函數存放的目錄。
說明請選擇具體的業務流程名稱、文件夾名稱或函數類目。如果尚無業務流程,請先創建一個業務流程。
單擊確定。
在編輯代碼區域,輸入函數的代碼。
配置服務資源組。
在API編輯頁面的右側導航欄中,單擊服務資源組,您可以在資源組類型區域配置API調用時使用的資源組類型。
當前僅支持選擇獨享服務資源組。
說明若在列表中無法選中目標資源組名稱,請進入DataWorks控制臺通過“修改歸屬工作空間”將資源組與工作空間進行綁定。您也可以單擊新購獨享服務資源組,購買獨享服務資源組,詳情請參見新增和使用獨享數據服務資源組。
在環境配置區域,您可設置內存、超時時間。
超時時間配置建議:獨享數據服務資源組不超過100ms。
單擊工具欄中的圖標,完成函數創建。
創建完成后,您可以測試函數并將函數發布,便于后續使用函數作為API的前置過濾器或后置過濾器。
后續步驟
創建函數后您可以對函數進行測試和發布。詳情請參見測試、發布與使用函數、發布函數。
發布后的函數可以進一步關聯至API,作為API的前置和后置過濾器,對請求參數和返回結果進行加工處理,詳情請參見:使用函數作為API過濾器。