集成 HTTP
魔筆平臺提供了強大的 HTTP 集成功能,允許用戶通過簡單的配置,實現(xiàn)對 HTTP 服務(wù)的無縫連接和數(shù)據(jù)交互。本文檔將指導(dǎo)您如何創(chuàng)建和使用 HTTP 集成。
功能介紹
魔筆平臺的 HTTP 集成功能支持以下特點:
流式傳輸支持:在配置面板中開啟「SSE」后即可支持流式數(shù)據(jù)傳輸。
自定義觸發(fā)方式:集成操作可以設(shè)置為手動觸發(fā)或自動運行,滿足不同的業(yè)務(wù)場景需求。
回調(diào)和數(shù)據(jù)轉(zhuǎn)換:支持在查詢成功或失敗時執(zhí)行特定的集成操作事件,以及對返回的數(shù)據(jù)進行自定義處理。
高級設(shè)置:提供防抖和禁止執(zhí)行條件的高級配置,以優(yōu)化集成操作的執(zhí)行。
事件相關(guān)內(nèi)容可參考:集成操作事件
使用 HTTP 集成
步驟 1:創(chuàng)建 HTTP 集成
登錄魔筆平臺,進入管控臺。
導(dǎo)航至“資源”->“集成”,點擊“創(chuàng)建集成”。
選擇“HTTP 配置”,并填寫集成名稱及描述。
配置不同環(huán)境的 HTTP 集成信息,包括
鑒權(quán)設(shè)置
、Base URL
等。點擊“確定”以創(chuàng)建 HTTP 集成。
步驟 2:在應(yīng)用內(nèi)部創(chuàng)建集成操作
打開“代碼”面板,點擊對應(yīng)作用域的“+”后選中“集成操作”。
選擇之前創(chuàng)建的 HTTP 集成作為資源,選擇 Method 并輸入 path 后,根據(jù)需求,選擇集成操作的觸發(fā)方式和更加細節(jié)的配置內(nèi)容。
點擊“運行”預(yù)覽查詢效果。
配置面板詳解
集成配置
Base URL:定義預(yù)期發(fā)起 HTTP 請求的請求路徑。
URL 參數(shù):定義了預(yù)期發(fā)起 HTTP 請求所攜帶的 query 參數(shù)。
Header 參數(shù):定義了預(yù)期發(fā)起 HTTP 請求所攜帶的頭部信息參數(shù)。
鑒權(quán)設(shè)置:定義了預(yù)期發(fā)起 HTTP 請求所使用的鑒權(quán)協(xié)議,包括
無鑒權(quán)
、Bearer Token
、阿里云 OpenAPI
、EPaaS 協(xié)議
和自定義協(xié)議
。說明阿里云 OpenAPI 協(xié)議支持配置請求參數(shù),并自動計算簽名后生成符合阿里云 OpenAPI 協(xié)議的請求報文,關(guān)于如何配置阿里云 OpenAPI 協(xié)議請求報文參數(shù),可以參考V3版本請求體&簽名機制。
自定義協(xié)議:自定義協(xié)議支持您對預(yù)期發(fā)起的 HTTP 請求參數(shù)進行自定義的處理,在自定義腳本中您可以使用 JavaScript 語言對集成配置和集成操作中的參數(shù)進行進一步的處理,在自定義密鑰列表中,您可以添加您需要使用的密鑰,并在自定義腳本中通過
data.keys
獲取。在自定義腳本中,您可以通過data
的對象屬性獲取預(yù)期發(fā)起的 HTTP 請求參數(shù),通過使用data.url
、data.parameters
、data.headers
和data.body
分別獲取請求路徑、query 參數(shù)、頭部信息參數(shù)和請求體。您需要在自定義腳本對參數(shù)進行處理后,返回包含 parameters、headers 和 body 的對象,HTTP 集成會使用您返回的對象替換原始 HTTP 請求中的 query 參數(shù)、頭部信息參數(shù)和請求體。下面是一個對 HTTP 請求方法、當(dāng)前時間和請求體使用自定義密鑰 secretKey 進行加簽,并將簽名結(jié)果和自定義密鑰 apiKey 增加到頭部信息進行返回的示例。// 工具包 const DateFns = require("date-fns"); const DateFnsTz = require("date-fns-tz"); const CryptoJS = require("crypto-js"); const { format } = DateFns; const { toZonedTime } = DateFnsTz; // 獲取當(dāng)前時間 const now = new Date(); const timeZone = 'Asia/Shanghai'; // 將當(dāng)前時間轉(zhuǎn)換為指定時區(qū)的時間 const zonedDate = toZonedTime(now, timeZone); const formattedDateTime = format(zonedDate, "yyyy-MM-dd'T'HH:mm:ss.SSS"); // 從data中獲取HTTP 請求參數(shù),以及集成配置中的密鑰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; // 構(gòu)造待簽字符串 const stringToSign = method + '\n' + formattedDateTime + '\n' + body; // 使用工具包進行加簽 const signature = CryptoJS.enc.Base64.stringify(CryptoJS.HmacSHA256(stringToSign, data.keys['secretKey'])); // 構(gòu)造新的頭部信息 let newHeaders = { ...headers, // 返回其他頭部信息 'apiKey': keys['apiKey'], 'Signature': signature, }; // 返回的結(jié)果包含query參數(shù)、頭部信息和請求體 return { parameters: parameters, headers: newHeaders, body: body };
說明您可以在自定義協(xié)議的自定義腳本中通過使用
require("crypto-js")
引入簽名函數(shù)工具包,關(guān)于如何使用 crypto-js 工具包,可以參考 crypto-js 。您可以通過使用require("date-fns")
和require("date-fns-tz")
引入時間函數(shù)工具包,關(guān)于如何使用 date-fns 工具包,可以參考 date-fns 。關(guān)于如何使用 date-fns-tz 工具包,可以參考date-fns-tz。重要自定義協(xié)議需要使用阿里云函數(shù)計算,請確保您開通了阿里云函數(shù)計算,關(guān)于阿里云函數(shù)計算以及如何開通阿里云函數(shù)計算,可以參考函數(shù)計算 FC。
通用配置
參數(shù):定義查詢所需的參數(shù),包括類型、默認值和描述。在查詢語句中,可通過
{{ varName }}
的方式引用參數(shù)。sse:定義了每輪對話是否使用流式數(shù)據(jù)傳輸。
method:定義了預(yù)期調(diào)用的 HTTP 服務(wù)的方法和請求路徑。
說明完整的請求路徑為集成配置的 Base URL 參數(shù)與集成操作 method 參數(shù)中配置的 url 拼接后的結(jié)果。
query:定義了預(yù)期發(fā)起 HTTP 請求所攜帶的 query 參數(shù)。
頭部信息:定義了預(yù)期發(fā)起 HTTP 請求所攜帶的頭部信息參數(shù)。
cookies:定義了預(yù)期發(fā)起 HTTP 請求所攜帶的 cookies 參數(shù)。
contentType:定義了預(yù)期發(fā)起 HTTP 請求數(shù)據(jù)的 content-type 類型。
data:定義了預(yù)期發(fā)起 HTTP 請求所攜帶的數(shù)據(jù)。
超時時間:配置操作的最大執(zhí)行時間。
描述:為集成操作提供詳細描述。
回調(diào)配置
數(shù)據(jù)轉(zhuǎn)化:對接口返回的數(shù)據(jù)進行處理,默認為
return data
,即不進行處理。流式接收回調(diào):配置流式調(diào)用接口 chunk 數(shù)據(jù)獲取時觸發(fā)的事件。
成功回調(diào):配置接口調(diào)用成功時觸發(fā)的事件。
失敗回調(diào):配置接口調(diào)用失敗時觸發(fā)的事件。
高級配置
防抖:設(shè)置防抖表達式,避免接口的頻繁調(diào)用。
禁止執(zhí)行條件:根據(jù)條件表達式確定是否執(zhí)行此集成操作。
手動觸發(fā)集成
事件觸發(fā)
在需要觸發(fā)集成操作的組件中,配置事件處理器。
將動作類型設(shè)置為集成操作,并選擇相應(yīng)的集成。
以對象形式填寫已配置的參數(shù)。
API 觸發(fā)
若此集成操作的名稱為action1
,則在任何可以執(zhí)行腳本的地方,可以使用action1.trigger()
方法觸發(fā)集成操作,若集成操作配置了參數(shù),則需要以對象形式填寫已配置的參數(shù)。