最新历史版本 :發佈API-參數為空查詢全部 返回文檔
編輯時間: 內容長度:图片数:目录数: 修改原因:
icon提示:

本文方案適用於 4.2.6.2 及之後版本;4.2.6.2 之前版本,請參見:歷史版本

目錄:

1. 概述编辑

1.1 版本

FineDataLink版本
功能變動
4.0.28

資料發佈 API 參數支援配置必填/非必填


1.2 應用場景

使用者想要在發佈 API 時,對 API 取數邏輯進行設定:未傳指定參數,則省略此參數對應的查詢條件。即實現想查詢全部資料時,不傳對應參數;要查詢其他非空值資料時,正常傳參。

18.png

2. 操作步驟编辑

範例:將S訂單中的資料發佈為 API。希望在取數時不傳遞參數「area」,則取出全部的資料,當正常傳遞「area」參數,則查詢其他非空值資料。

2.1 建立API

進入「資料服務」,點選「建立>API」,進入 API 發佈編輯介面。如下圖所示:

11.png

2.2 輸入API資訊

設定 API 名稱;請求方式選擇 GET;設定路徑、逾時時間、綁定應用;API 描述可為空。

若此時沒有建立應用,可不新增應用,在完成 API 建立後,在應用列表中綁定 API ,詳情參見:綁定API至應用綁定應用步驟必做,否則後續無法呼叫該 API 。

各設定項說明請參見:發佈API概述

12.png

注:若使用者想要對發佈的API進行層級設計,可以使用連字元(-)、正斜槓(/)等符號設計API路徑,如下圖所示:

13.png

2.3 設定發佈內容及參數

1)設定介面如下圖所示:

SELECT * FROM S訂單 WHERE 1=1 AND CASE WHEN '${area}' != '' THEN 貨主地區='${area}' ELSE 1=1 END

14.png

各設定項說明如下:

設定項
說明
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 時不引用參數,預設取出所有的資料,因此取消開啟「參數必填」按鈕

回傳值配置

點選「獲取」按鈕,可輸入參數值查詢資料

16.png

2)點選下一步」進入「預覽測試」介面,點選測試呼叫按鈕,可看到參數為空成功查詢全部資料。如下圖所示:

15.png

3)點選生成API按鈕。

2.4 API上線

在右上角點選「上線」,即可發佈 API,如下圖所示:

17.png

3. 後續步驟编辑

1)若使用者在發佈時沒有將 API 新增至指定應用,也可以在 綁定API至應用 中將上線的 API 透過應用進行管理,以便能夠被呼叫。

2)若需要使用已經發布的 API,詳情參見:使用資料服務發佈的API(GET 請求)

可看到參數為空,即不傳對應參數 area 時,取全部的資料,如下圖所示:

18.png

對已經發布的 API 進行管理,詳情參見:服務維運