更新时间:2023-04-23 GMT+08:00

编写函数API脚本(Java Script)

本节主要介绍在APIC自定义后端中开发函数API时,对于定义脚本的编写指导。

函数API通过编写函数脚本实现将多个服务封装成一个服务。

函数API使用Javascript编写函数,Javascript的运行采用java Nashorn的运行标准,支持ECMAScript Edition 5.1规范。Javascript引擎运行于java虚拟机,可调用自定义后端提供的Java类实现具体功能。

示例一 Helloworld

定义execute函数作为入口,execute函数返回的内容将作为Function API的响应Body。

1
2
3
function execute(data) {
    return "Hello world!"
}

示例二 获取请求参数

execute函数传入的data参数中包含了请求参数。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
function execute(data) {
    data = JSON.parse(data)
    return {
        "method":data["method"],
        "uri":data["uri"],
        "headers":data["headers"],
        "param":data["param"],
        "body":data["body"],
    }
}

示例三 设置响应参数

在execute函数中返回APIConnectResponse对象,可以指定调用函数API接口返回的HTTP状态码、返回头和body体。

1
2
3
4
importClass(com.roma.apic.livedata.provider.v1.APIConnectResponse);
function execute(data) {
    return new APIConnectResponse(401, {"X-Type":"Demo"}, "unauthorized", false);
}

此时,调用Function API返回的HTTP状态码为401,响应头中包含了“X-Type: Demo”,且响应body为“unauthorized”。

示例四 调用Java函数

以下示例中,使用importClass引入了Java类,并调用其中的函数。所有提供的Java类可参见函数API脚本的类说明

1
2
3
4
5
importClass(com.roma.apic.livedata.common.v1.Md5Utils);
function execute(data) {
    var sourceCode = "Hello world!";
    return Md5Utils.encode(sourceCode);
}

引用公共配置

  1. 登录ROMA Connect控制台,在“实例”页面单击实例上的“查看控制台”,进入实例控制台。
  2. 在左侧的导航栏选择“服务集成 APIC > 自定义后端”,在“配置管理”页面单击“添加配置”。
  3. 在添加配置弹窗中配置相关信息,完成后单击“确定”。
    表1 公共引用配置

    参数

    配置说明

    配置名称

    填写配置的名称,根据规划自定义。

    配置类型

    选择配置的类型,可选择“模板变量”、“密码”和“证书”。

    所属集成应用

    选择配置所归属的集成应用。

    配置值

    仅当“配置类型”选择“模板变量”和“密码”时需要配置。

    填写模板变量或密码的值。

    确认配置值

    仅当“配置类型”选择“密码”时需要配置。

    填写密码的值,需与“配置值”保持一致。

    证书

    仅当“配置类型”选择“证书”时需要配置。

    填写pem编码格式的证书内容。

    私钥

    仅当“配置类型”选择“证书”时需要配置。

    填写pem编码格式的证书私钥。

    密码

    仅当“配置类型”选择“证书”时需要配置。

    填写证书私钥的密码。

    确认密码

    仅当“配置类型”选择“证书”时需要配置。

    填写证书私钥的密码,需与“密码”保持一致。

    描述

    填写配置的描述信息。

  4. 在Java Script函数脚本中引用配置。
    假如配置名称为example,则引用格式如下:
    • 模板变量:#{example}
    • 密码:CipherUtils.getPlainCipherText("example")
    • 证书:CipherUtils.getPlainCertificate("example")