呼叫FastWeb RestAPI
# TaskRunner 自定程式 - 呼叫FastWeb RestAPI
# 1. 說明
- 任務運行器 TaskRunner 通過自定程式,通過 RestAPI 訪問 FastWeb,獲取返回的結果。
- 示例使用的 FastWeb 是演示環境的地址,如您需要自行設計開發 RestAPI 用例,可參考這個示例進行擴充套件。
# 2. 設計程式
TaskRunner 的初始示例已包含 RestAPI呼叫獲取GUID
自定程式。下面介紹建立自定程式的流程。
- 點選
自定程式
選項卡,在自定程式界面中點選新建
按鈕,打開新建程式界面。 - 在新建程式界面,填寫要設計的自定程式的基本資訊。如下圖所示。填寫完成點選
儲存
按鈕。
- 返回自定程式列表界面,選擇剛才建立的
JS016
自定程式,點選功能表欄中的設計
按鈕,打開程式設計器界面。 - 在程式設計器界面中輸入自定程式程式碼,程式碼示例如下。完成後,點選
儲存
按鈕。
//回撥事件
var guid;
function OnRestAPIResultData(Sender,AResult)
{
//Showmessage("GUID:"+AResult);
guid = AResult;
UGMM.AddLog("GUID: " + guid);
}
//主程式
{
var rest = new TRestAPI(nil);
try{
//繫結事件
TRestAPI(rest).OnResultData = "OnRestAPIResultData";
//屬性賦值
TRestAPI(rest).Caption = "獲取GUID";
TRestAPI(rest).Server = iif(UgParams.Values["server"] == "","https://web.diylogi.com",UgParams.Values["server"]);
TRestAPI(rest).Url = UgParams.Values["url"];
TRestAPI(rest).ContentType = iif(UgParams.Values["contenttype"] == "","text/html",UgParams.Values["contenttype"]);
TRestAPI(rest).Method = iif(UgParams.Values["method"] == "",rmGET,rmPOST);
TRestAPI(rest).Params.Add("restapi=script");
TRestAPI(rest).Params.Add("apiname=" + iif(UgParams.Values["apiname"] == "","guid",UgParams.Values["apiname"]));
//呼叫
TRestAPI(rest).Send;
}
finally
{
//釋放
rest.free;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
- 如需要測試效果,可在程式設計器界面中點選
運行
按鈕進行測試。運行后,可在任務運行器的日誌里檢視輸出的結果。
程式中定義的參數說明如下:
名稱 | 說明 | 是否必填 | 預設值 |
---|---|---|---|
server | RestAPI 服務的地址 | 是 | https://web.diylogi.com |
url | RestAPI路徑 | 否 | |
contenttype | 返回的數據的型別 | 否 | text/html |
method | 請求方法 | 否 | GET |
apiname | 請求的API名稱(FastWeb使用) | 否 | guid |
# 3. 呼叫執行
設計完成的自定程式可使用以下方式來呼叫執行。
# 3.1. RestAPI
使用瀏覽器或RestAPI 客戶端,訪問以下地址,執行自定程式呼叫。請將 {ip}
修改爲運行 TaskRunner 主機的IP地址,{port}
修改爲 TaskRunner WebSocket 服務端監聽的地址。
http://{ip}:{port}?restapi=script&taskname=JS016&evaluate=guid
1
如需要自定義參數,參照以下方式執行。其中將 {}
標識的參數值替換為目標參數值,部分非必填專案可不引用。
http://{ip}:{port}?restapi=script&taskname=JS016&evaluate=guid&server={server}&url={url}&contenttype={contenttype}&method={method}&apiname={apiname}
1
# 3.2. WebSocket
使用WebSocket客戶端,連線至 TaskRunner 中的 WebSocket 服務端。向 WebSocket 服務端發送以下文字實現自定程式的呼叫。
{"action":"script","taskname":"JS016"}
1
如需要自定義參數,參照以下方式執行。其中將 {}
標識的參數值替換為目標參數值,部分非必填專案可不引用。
{"action":"script","taskname":"JS016","params":[{"name":"server","value":"{server}"},{"name":"url","value":"{url}"},{"name":"contenttype","value":"{contenttype}"},{"name":"method","value":"{method}"},{"name":"apiname","value":"{apiname}"}]}
1
# 3.3. MQTT
使用 MQTT 客戶端,連線至 TaskRunner 連線的 MQTT 伺服器。MQTT 客戶端向 TaskRunner 訂閱的主題發送以下文字實現自定程式的呼叫。
{"action":"script","taskname":"JS016"}
1
如需要自定義參數,參照以下方式執行。其中將 {}
標識的參數值替換為目標參數值,部分非必填專案可不引用。
{"action":"script","taskname":"JS016","params":["params":[{"name":"server","value":"{server}"},{"name":"url","value":"{url}"},{"name":"contenttype","value":"{contenttype}"},{"name":"method","value":"{method}"},{"name":"apiname","value":"{apiname}"}]}
1