魔笔平台提供了强大的 HTTP 集成功能,允许用户通过简单的配置,实现对 HTTP 服务的无缝连接和数据交互。本文档将指导您如何创建和使用 HTTP 集成。
功能介绍
魔笔平台的 HTTP 集成功能支持以下特点:
流式传输支持:在配置面板中开启「SSE」后即可支持流式数据传输。
自定义触发方式:集成操作可以设置为手动触发或自动运行,满足不同的业务场景需求。
回调和数据转换:支持在查询成功或失败时执行特定的集成操作事件,以及对返回的数据进行自定义处理。
高级设置:提供防抖和禁止执行条件的高级配置,以优化集成操作的执行。
事件相关内容可参考:集成操作事件
使用 HTTP 集成
步骤 1:创建 HTTP 集成
登录魔笔平台,进入管控台。
导航至“资源”->“集成”,点击“创建集成”。
选择“HTTP 配置”,并填写集成名称及描述。
配置不同环境的 HTTP 集成信息,包括
鉴权设置
、Base URL
等。点击“确定”以创建数据库集成。
步骤 2:在应用内部创建集成操作
打开“代码”面板,点击对应作用域的“+”后选中“集成操作”。
选择之前创建的 HTTP 集成作为资源,选择 Method 并输入 path 后,根据需求,选择集成操作的触发方式和更加细节的配置内容。
点击“运行”预览查询效果。
配置面板详解
集成配置
Base URL:定义预期发起 HTTP 请求的请求路径。
URL 参数:定义了预期发起 HTTP 请求所携带的 query 参数。
Header 参数:定义了预期发起 HTTP 请求所携带的头部信息参数。
鉴权设置:定义了预期发起 HTTP 请求所使用的鉴权协议,包括
无鉴权
、Bearer Token
、阿里云 OpenAPI
、EPaaS 协议
和自定义协议
。说明阿里云 OpenAPI 协议支持配置请求参数,并自动计算签名后生成符合阿里云 OpenAPI 协议的请求报文,关于如何配置阿里云 OpenAPI 协议请求报文参数,可以参考V3版本请求体&签名机制。
自定义协议:自定义协议支持您对预期发起的 HTTP 请求参数进行自定义的处理,在自定义脚本中您可以使用 JavaScript 语言对集成配置和集成操作中的参数进行进一步的处理,在自定义密钥列表中,您可以添加您需要使用的密钥,并在自定义脚本中通过
data.keys
获取。在自定义脚本中,您可以通过data
的对象属性获取预期发起的 HTTP 请求参数,通过使用data.url
、data.parameters
、data.headers
和data.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
,即不进行处理。成功回调:配置接口调用成功时触发的事件。
失败回调:配置接口调用失败时触发的事件。
高级配置
防抖:设置防抖表达式,避免接口的频繁调用。
禁止执行条件:根据条件表达式确定是否执行此集成操作。
手动触发集成
事件触发
在需要触发集成操作的组件中,配置事件处理器。
将动作类型设置为集成操作,并选择相应的集成。
以对象形式填写已配置的参数。
API 触发
若此集成操作的名称为action1
,则在任何可以执行脚本的地方,可以使用action1.trigger()
方法触发集成操作,若集成操作配置了参数,则需要以对象形式填写已配置的参数。