1. 概述
1.1 版本
FineDataLink版本 | 功能變動 |
---|---|
4.0.28 | 資料發佈 API 參數支援配置必填/非必填 |
1.2 應用場景
使用者想要在發佈 API 時,對 API 取數邏輯進行設定:未傳指定參數,則省略此參數對應的查詢條件。即實現想查詢全部資料時,不傳對應參數;要查詢其他非空值資料時,正常傳參。
2. 操作步驟
範例:將「S訂單」中的資料發佈為 API。希望在取數時不傳遞參數「area」,則取出全部的資料,當正常傳遞「area」參數,則查詢其他非空值資料。
2.1 建立API
進入「資料服務」,點選「建立>API」,進入 API 發佈編輯介面。如下圖所示:
2.2 輸入API資訊
設定 API 名稱;請求方式選擇 GET;設定路徑、逾時時間、綁定應用;API 描述可為空。
若此時沒有建立應用,可不新增應用,在完成 API 建立後,在應用列表中綁定 API ,詳情參見:綁定API至應用;綁定應用步驟必做,否則後續無法呼叫該 API 。
各設定項說明請參見:發佈API概述
注:若使用者想要對發佈的API進行層級設計,可以使用連字元(-)、正斜槓(/)等符號設計API路徑,如下圖所示:
2.3 設定發佈內容及參數
1)設定介面如下圖所示:
SELECT * FROM S訂單 WHERE 1=1 AND CASE WHEN '${area}' != '' THEN 貨主地區='${area}' ELSE 1=1 END
各設定項說明如下:
設定項 | 說明 |
---|---|
SQL語句 | 1)SQL 語句中設定參數 area,該 API 發佈後,可使用參數查詢「S訂單」表中的數據 2)範例為 MySQL 資料庫文法,不同資料庫的文法不同,使用者可根據實際使用資料庫類型修改文法 3)若 SQL 語句中參數加上''(本文範例寫法),呼叫 API 時,參數值就不用帶'' 注:此時若呼叫 API ,則SQL 語句會將預設值空帶入,即執行SELECT * FROM S訂單 WHERE 1=1 AND CASE WHEN '' != '' THEN 貨主地區='' ELSE 1=1 END,即查詢出全量資料 若設定預設值為 NULL 時,則SQL 語句會將預設值 NULL 帶入,即執行 SELECT * FROM S訂單 WHERE 1=1 AND CASE WHEN 'NULL' != '' THEN 貨主地區='NULL' ELSE 1=1 END,此時的執行結果取決於資料庫讀取情況 若 SQL 語句中參數不帶'',即:SELECT * FROM S訂單 WHERE 1=1 AND CASE WHEN ${area} != '' THEN 貨主地區=${area} ELSE 1=1 END,則呼叫 API 時,參數值需要帶上'' 4)4.0.28 之前版本:為瞭解決 SQL 防注入問題,FineDataLink 將參數中包含的單引號預設新增進防注入限制分離字元中,也就是預設 SQL 語句中參數中的資料不允許加單引號,需要在查詢預覽的時候手動給參數預設值加引號進行預覽。因此若使用者需要 SQL 語句中的參數需要有引號,則需要在 SQL防注入 中將分離字元單引號取消選擇 |
請求參數配置 | 自動識別查詢 SQL 設定的參數名,可以定義該參數的參數類型 由於此時希望實現使用 API 時不引用參數,預設取出所有的資料,因此取消開啟「參數必填」按鈕 |
回傳值配置 | 點選「獲取」按鈕,可輸入參數值查詢資料: |
2)點選「下一步」進入「預覽測試」介面,點選「測試呼叫」按鈕,可看到參數為空成功查詢全部資料。如下圖所示:
3)點選生成「API」按鈕。
2.4 API上線
在右上角點選「上線」,即可發佈 API,如下圖所示:
3. 後續步驟
1)若使用者在發佈時沒有將 API 新增至指定應用,也可以在 綁定API至應用 中將上線的 API 透過應用進行管理,以便能夠被呼叫。
2)若需要使用已經發布的 API,詳情參見:使用資料服務發佈的API(GET 請求)
可看到參數為空,即不傳對應參數 area 時,取全部的資料,如下圖所示:
對已經發布的 API 進行管理,詳情參見:服務維運