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

背景信息

您可以在数据服务中创建函数、测试函数、发布函数,发布后的函数可被进一步关联至API,作为API的过滤器,对API的请求参数或返回结果进行加工处理,从而实现API的复杂查询需求,灵活适配各类业务场景。常见场景的代码示例请参见:使用Aviator函数作为过滤器的最佳实践

使用限制

  • 您需要购买DataWorks专业版及以上版本,才可以使用Python函数及过滤器功能。
  • Python函数需要运行在公共数据服务资源组中。
  • Python函数正在改造中,暂不支持新建、克隆和发布新的Python函数。如需使用函数功能,建议您使用Aviator函数。详情请参见创建和使用Aviator函数(过滤器)
  • 当使用函数作为API过滤器时,前置过滤器和后置过滤器的函数类型需要保持一致。即:均选择Aviator函数类型或Python函数类型。暂不支持对同一API的前置和后置过滤器选择不同的函数类型。
Python函数作为过滤器的使用限制如下:
  • 过滤器仅支持Python 3.0的语法。
  • 过滤器仅支持import json,time,random,pickle,re,math
  • 过滤器限定函数名def handler(event,context):

函数结构说明

# -*- coding: utf-8 -*-

# event (str) : in filter it is the API result, in other cases, it is your param
# context : some environment information, temporarily useless
# import module limit: json,time,random,pickle,re,math
# do not modify function name
import json
def handler(event,context):
    # load str to json object
    obj = json.loads(event)
    # add your code here
    # end add
    return obj
您可以基于该函数进行修改,并根据自身需求修改函数的入参名称。
参数1[context]:字符串类型,包含API执行的上下文环境,目前为空,暂未启用。  
参数2[event]:字符串类型,包含API的请求参数,或者是上一个过滤器处理后的结果。
说明
  • 系统会将API请求参数或上个过滤器的输出结果,从key-value map转换为JSON形式,并使用该JSON对event参数进行传参,且JSON中的value仅支持字符串类型。
  • 前置过滤器的输出结果为key-value map。该输出结果将作为SQL语句执行入参,因此仅支持输出深度为1的key-value map。

创建函数

  1. 登录DataWorks控制台
  2. 在左侧导航栏,单击工作空间列表
  3. 选择工作空间所在地域后,单击相应工作空间后的更多 > 数据服务
  4. 服务开发页面,鼠标悬停至新建图标,单击新建函数 > 新建Python函数
    您也可以找到相应的业务流程,右键单击函数,选择新建 > 新建Python函数
  5. 新建Python函数对话框中,配置各项参数。
    PYthon
    参数描述
    函数名称自定义函数的名称,不得超过256个字符。
    函数模板仅支持Python3 Standard v1模板。
    运行环境仅支持Python 3.0。
    函数描述对函数进行简单描述,不得超过512个字符。
    目标文件夹存放函数的目录。
  6. 单击确认
  7. 在函数的编辑页面,配置函数。
    1. 编辑代码区域,输入函数的代码。
    2. 环境配置区域,设置内存超时时间
  8. 单击工具栏中的保存图标。

使用函数作为API的过滤器

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