集成 HTTP

魔笔平台提供了强大的 HTTP 集成功能,允许用户通过简单的配置,实现对 HTTP 服务的无缝连接和数据交互。本文档将指导您如何创建和使用 HTTP 集成。

功能介绍

魔笔平台的 HTTP 集成功能支持以下特点:

  • 流式传输支持:在配置面板中开启「SSE」后即可支持流式数据传输。

  • 自定义触发方式:集成操作可以设置为手动触发或自动运行,满足不同的业务场景需求。

  • 回调和数据转换:支持在查询成功或失败时执行特定的集成操作事件,以及对返回的数据进行自定义处理。

  • 高级设置:提供防抖和禁止执行条件的高级配置,以优化集成操作的执行。

事件相关内容可参考:集成操作事件

使用 HTTP 集成

步骤 1:创建 HTTP 集成

  1. 登录魔笔平台,进入管控台。

  2. 导航至“资源”->“集成”,点击“创建集成”。

  3. 选择“HTTP 配置”,并填写集成名称及描述。

  4. 配置不同环境的 HTTP 集成信息,包括鉴权设置Base URL等。

  5. 点击“确定”以创建数据库集成。

步骤 2:在应用内部创建集成操作

  1. 打开“代码”面板,点击对应作用域的“+”后选中“集成操作”。

    image

  2. 选择之前创建的 HTTP 集成作为资源,选择 Method 并输入 path 后,根据需求,选择集成操作的触发方式和更加细节的配置内容。

image

  1. 点击“运行”预览查询效果。

配置面板详解

集成配置

  • Base URL:定义预期发起 HTTP 请求的请求路径。

  • URL 参数:定义了预期发起 HTTP 请求所携带的 query 参数。

  • Header 参数:定义了预期发起 HTTP 请求所携带的头部信息参数。

  • 鉴权设置:定义了预期发起 HTTP 请求所使用的鉴权协议,包括无鉴权Bearer Token阿里云 OpenAPIEPaaS 协议自定义协议image

    说明

    阿里云 OpenAPI 协议支持配置请求参数,并自动计算签名后生成符合阿里云 OpenAPI 协议的请求报文,关于如何配置阿里云 OpenAPI 协议请求报文参数,可以参考V3版本请求体&签名机制

    自定义协议:自定义协议支持您对预期发起的 HTTP 请求参数进行自定义的处理,在自定义脚本中您可以使用 JavaScript 语言对集成配置和集成操作中的参数进行进一步的处理,在自定义密钥列表中,您可以添加您需要使用的密钥,并在自定义脚本中通过data.keys获取。image在自定义脚本中,您可以通过data的对象属性获取预期发起的 HTTP 请求参数,通过使用data.urldata.parametersdata.headersdata.body分别获取请求路径、query 参数、头部信息参数和请求体。您需要在自定义脚本对参数进行处理后,返回包含 parameters、headers 和 body 的对象,HTTP 集成会使用您返回的对象替换原始 HTTP 请求中的 query 参数、头部信息参数和请求体。下面是一个对 HTTP 请求方法、当前时间和请求体使用自定义密钥 secretKey 进行加签,并将签名结果和自定义密钥 apiKey 增加到头部信息进行返回的示例。

    // 工具包
    const DateFns = require("date-fns");
    const DateFnsTz = require("date-fns-tz");
    const CryptoJS = require("crypto-js");
    
    const { format } = DateFns;
    const { toZonedTime } = DateFnsTz;
    
    
    // 获取当前时间
    const now = new Date();
    const timeZone = 'Asia/Shanghai';
    
    // 将当前时间转换为指定时区的时间
    const zonedDate = toZonedTime(now, timeZone);
    const formattedDateTime = format(zonedDate, "yyyy-MM-dd'T'HH:mm:ss.SSS");
    
    // 从data中获取HTTP 请求参数,以及集成配置中的密钥keys
    const url = data.url;
    const method = data.method;
    const parameters = data.parameters;
    const headers = data.headers;
    const body = data.body;
    const keys = data.keys;
    
    // 构造待签字符串
    const stringToSign = method + '\n' + formattedDateTime + '\n' + body;
    
    // 使用工具包进行加签
    const signature = CryptoJS.enc.Base64.stringify(CryptoJS.HmacSHA256(stringToSign, data.keys['secretKey']));
    
    // 构造新的头部信息
    let newHeaders = {
        ...headers, // 返回其他头部信息
        'apiKey': keys['apiKey'],
        'Signature': signature,
    };
    // 返回的结果包含query参数、头部信息和请求体
    return {
        parameters: parameters,
        headers: newHeaders,
        body: body
    };
    说明

    您可以在自定义协议的自定义脚本中通过使用require("crypto-js")引入签名函数工具包,关于如何使用 crypto-js 工具包,可以参考 crypto-js 。您可以通过使用require("date-fns")require("date-fns-tz")引入时间函数工具包,关于如何使用 date-fns 工具包,可以参考 date-fns 。关于如何使用 date-fns-tz 工具包,可以参考date-fns-tz

    重要

    自定义协议需要使用阿里云函数计算,请确保您开通了阿里云函数计算,关于阿里云函数计算以及如何开通阿里云函数计算,可以参考函数计算 FC

通用配置

  • 参数:定义查询所需的参数,包括类型、默认值和描述。在查询语句中,可通过{{ varName }}的方式引用参数。

  • sse:定义了每轮对话是否使用流式数据传输。

  • method:定义了预期调用的 HTTP 服务的方法和请求路径。

    说明

    完整的请求路径为集成配置的 Base URL 参数与集成操作 method 参数中配置的 url 拼接后的结果。

  • query:定义了预期发起 HTTP 请求所携带的 query 参数。

  • 头部信息:定义了预期发起 HTTP 请求所携带的头部信息参数。

  • cookies:定义了预期发起 HTTP 请求所携带的 cookies 参数。

  • contentType:定义了预期发起 HTTP 请求数据的 content-type 类型。

  • data:定义了预期发起 HTTP 请求所携带的数据。

  • 超时时间:配置操作的最大执行时间。

  • 描述:为集成操作提供详细描述。

回调配置

  • 数据转化:对接口返回的数据进行处理,默认为return data,即不进行处理。

  • 成功回调:配置接口调用成功时触发的事件。

  • 失败回调:配置接口调用失败时触发的事件。

高级配置

  • 防抖:设置防抖表达式,避免接口的频繁调用。

  • 禁止执行条件:根据条件表达式确定是否执行此集成操作。

手动触发集成

事件触发

  1. 在需要触发集成操作的组件中,配置事件处理器。

  2. 将动作类型设置为集成操作,并选择相应的集成。

  3. 以对象形式填写已配置的参数。

API 触发

若此集成操作的名称为action1,则在任何可以执行脚本的地方,可以使用action1.trigger()方法触发集成操作,若集成操作配置了参数,则需要以对象形式填写已配置的参数。