本文将为您介绍如何创建Aviator函数,并使用Aviator函数作为API的前置或后置过滤器。

背景信息

您可以在数据服务中创建函数、测试函数、发布函数,发布后的函数可被进一步关联至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

创建函数

  1. 进入数据服务页面。
    1. 登录DataWorks控制台
    2. 在左侧导航栏,单击工作空间列表
    3. 选择工作空间所在地域后,单击相应工作空间后的进入数据服务
  2. 服务开发页面,鼠标悬停至新建图标,单击新建函数 > 新建Aviator函数
    您也可以找到相应的业务流程,右键单击函数,选择新建函数 > 新建Aviator函数
  3. 新建Aviator函数对话框中,配置各项参数。
    Python
    参数 描述
    函数名称 自定义函数的名称,不能超过256个字符。
    函数模板 仅支持AviatorScript Standard v1
    函数描述 对函数进行简单描述,不得超过512个字符。
    目标文件夹 选择函数存放的目录。
    说明 请选择具体的业务流程名称、文件夹名称或函数类目。如果尚无业务流程,请先创建一个业务流程。
  4. 单击确认
  5. 在函数的编辑页面,配置函数。
    1. 编辑代码区域,输入函数的代码。
    2. 环境配置区域,设置超时时间
  6. 配置独享服务资源组。
    在函数编辑页面的右侧导航栏中,单击服务资源组,选择方案独享服务资源组,并在独享服务资源组列表中选择目标资源组名称。函数
    说明 若在列表中无法选中目标资源组名称,请进入DataWorks控制台通过“修改归属工作空间”将资源组与工作空间进行绑定。您也可以单击新购独享服务资源组,购买独享服务资源组,详情请参见新增和使用独享服务资源组。
  7. 单击工具栏中的保存图标,完成函数创建。

使用函数作为API的过滤器

  1. 服务开发页面,展开目标API所在的业务流程 > API
  2. 双击相应的API名称,打开该API的编辑页面。
  3. 单击页面右侧的过滤器
    根据需要勾选使用前置过滤器使用后置过滤器,并选择函数类型Aviator函数后,单击前置过滤器或后置过滤器右侧的下拉框选择目标函数(可添加多个函数,执行时会按添加顺序对参数进行处理)。
    说明
    • 过滤器由一个或多个函数组成,允许您对API的请求参数进行预处理或对查询结果进行二次加工。
    • 若在下拉列表中无法获取目标函数名称,请检查目标函数是否已发布,或尝试新建函数并发布。详情请参见发布函数
    过滤器
  4. 单击API返回结果预览,查看使用过滤器后的结果是否符合预期。