全部產品
Search
文件中心

DataWorks:通過資料來源產生API(API Gateway)

更新時間:Apr 26, 2026

資料服務支援通過嚮導模式或指令碼模式,基於已有資料來源產生資料API。本文以API Gateway為例,指導您完成從開通網關、建立商務程序到產生並配置API的完整流程。

說明

若使用雲原生API Gateway,操作步驟請參見建立、發布和調用API(雲原生API Gateway)

前提條件

  • 已在工作空間管理 > 數據源管理頁面配置資料來源。詳情請參見配置資料來源

  • 資料服務需提前準備資源群組,生產環境建議使用Serverless資源群組,詳情請參見資源群組與網路連通

進入資料服務頁面

登入DataWorks控制台,切換至目標地區後,單擊左側導覽列的資料分析與服務 > 資料服務,在下拉框中選擇對應工作空間後單擊進入資料服務

步驟一:開通API Gateway並建立API分組

在建立商務程序之前,您需要先在API Gateway控制台完成以下準備工作。

  1. 登入API Gateway控制台,開通API Gateway服務。

  2. 在API Gateway控制台中,建立一個API分組。API分組是指標對某一個功能或情境的API集合,也是API Gateway對API的最小嵌入式管理單元。

    重要

    API Gateway的地區必須與DataWorks工作空間地區一致。

步驟二:建立商務程序

資料服務基於商務程序實現以業務為單元的API開發,每個商務程序需綁定一個API分組。在產生API前,您需要先建立商務程序。

  1. 服務開發頁面,單擊image.png表徵圖,選擇新建業務流程

  2. 新建業務流程對話方塊中,配置各項參數。

    參數

    描述

    業務名稱

    在所屬工作空間中必須唯一。支援漢字、英文字母、數字、底線(_),以英文字母或漢字開頭,4~50個字元。

    API 群組

    選擇您在步驟一中建立的API分組。如果需要建立分組,請進入API Gateway建立。

    重要

    商務程序綁定API分組後,不支援修改。請謹慎選擇。

    業務描述

    對商務程序進行描述,不能超過180個字元。

  3. 單擊確定。建立完成後,您可以在業務流程列表中查看。

步驟三:選擇API建立模式

資料服務支援通過嚮導模式指令碼模式兩種方式產生API。兩種模式共用相同的API基礎配置流程,但在查詢邏輯的構建方式上有本質區別。

模式對比

功能分類

功能點

嚮導模式

指令碼模式

查詢對象

單資料來源、單資料表查詢

支援

支援

單資料來源、多資料表關聯查詢

不支援

支援

查詢條件

等值查詢、範圍查詢、模糊比對

支援(通過操作符選擇)

支援(SQL文法自由定義)

MyBatis動態條件(選填參數等)

不支援

支援(進階SQL模式)

查詢結果

欄位值原樣返回、返回結果分頁

支援

支援

數學運算、彙總函式運算

不支援

支援

如何選擇

  • 使用嚮導模式:當您只需對單張資料表進行簡單的等值查詢、模糊查詢或範圍過濾,無需編碼即可可視化配置API。

  • 使用指令碼模式:當您需要多表JOIN、嵌套子查詢、彙總統計、動態條件拼接(如選填參數)等進階查詢能力時。

說明

嚮導模式建立的API可以轉換為指令碼模式,但轉換後無法回退。詳見本文附錄:嚮導模式轉指令碼模式

步驟四:產生API

  1. 服務開發頁面,滑鼠移至上方至image.png表徵圖,單擊新建API > 生成API

    您也可以開啟相應的商務程序,按右鍵API,選擇新建API > 生成API

  2. 生成API對話方塊中,配置各項參數。

    參數

    描述

    API 模式

    選擇嚮導模式腳本模式。選擇指令碼模式時,還需進一步選擇SQL 模式基礎SQL高級SQL)。

    • 基礎SQL:通過基礎SQL文法編寫查詢邏輯。

    • 高級SQL:通過支援MyBatis標籤的SQL文法編寫查詢邏輯。支援的標籤類型包括:if、choose、when、otherwise、trim、foreach和where。

    API名稱

    支援中文、英文、數字、底線(_),且只能以英文或中文開頭,4~50個字元。

    APIPath

    API存放的路徑,即相對於服務host的請求路徑,例如/user。支援英文、數字、底線(_)和連字號(-),以(/)開頭,不超過200個字元。

    協議

    支援HTTPHTTPS

    如果您需要通過HTTPS協議調用API,請您發布API至網關後,在API Gateway控制台綁定獨立網域名稱,並上傳SSL認證。詳情請參見支援HTTPS

    請求方式

    支援GETPOST

    說明

    選擇GET時,請求參數位置僅支援QUERY。選擇POST時,支援QUERYBody

    返回類型

    僅支援JSON傳回型別。

    可見範圍

    • 工作空間:該API對本工作空間內的所有成員可見。

    • 私有:該API僅對API的負責人可見,且暫不支援授權。

    標籤

    從標籤列表中選擇,最多5個標籤,每個不超過20個字元。詳情請參見建立及管理API標籤

    描述

    對API進行簡要描述,不超過2000個字元。

    目標文件夾

    選擇已建立的商務程序作為API存放目錄。預設格式為:"商務程序/商務程序名稱/API"。

  3. 單擊確定,進入API編輯頁面。

步驟五:配置API

1. 選擇資料來源和表

雙擊開啟API的編輯頁面,在選擇表地區,配置數據源類型數據源名稱數據源環境等參數。不同資料來源類型的配置參數略有不同,具體以介面為準。

說明
  • 您需要提前在工作空間管理 > 數據源管理中配置好資料來源,資料表下拉式清單支援表名搜尋。

  • 指令碼模式下,必須先選擇一個資料來源,且僅支援同一資料來源的多表關聯查詢。

  • 標準模式工作空間支援在數據源環境配置項選擇訪問開發或生產環境資料來源,詳情請參見工作空間模式區別

  • 對於MaxCompute資料來源,可使用DataWorks資料服務的加速服務或MaxCompute的MCQA加速。選擇加速服務時,您需要先建立加速項,詳情請參見加速服務

2. 定義查詢邏輯

嚮導模式和指令碼模式在定義查詢邏輯時的操作方式不同。

嚮導模式:選擇參數

選擇資料表後,選擇參數地區會自動顯示該表的所有欄位。根據需求勾選欄位的設為請求參數設為返回參數列。

如果需要對返回結果排序,單擊欄位後的排序按鈕,將其添加至排序列表。排序列表中可添加多個欄位,序號越小優先順序越高,通過上移下移調整優先順序,每個欄位可選擇昇冪降冪

指令碼模式:編寫查詢SQL

編寫査詢SQL地區,輸入查詢SQL語句。

基礎SQL模式:使用${paramName}標記請求參數。SELECT後的欄位為返回參數,WHERE條件中的${param}為請求參數。

編寫SQL時需遵循以下規則:

  • 支援同一資料來源下的單表查詢、多表關聯查詢和巢狀查詢。

  • 不支援多條SQL語句、注釋和INSERT/UPDATE/DELETE等非SELECT文法。

  • 不支援SELECT *,必須明確指定查詢列。

  • 列名帶表名首碼(如t.name)時,必須取別名(如t.name as name)。使用彙總函式時也必須取別名。

  • 不支援將${param}放在引號中。如需拼接字串請使用concat('abc', ${xyz}, '123')

  • 基礎SQL不支援設定參數為可選。

進階SQL模式:支援MyBatis標籤文法(if、choose、when、otherwise、trim、foreach、where),可靈活實現空值校正、多值遍曆、動態查表、動態排序等複雜查詢邏輯。常見情境程式碼範例請參見本文附錄:進階SQL(MyBatis文法)樣本

進階SQL中使用特殊字元時需進行轉義處理:

特殊字元

逸出字元

含義

>

>

大於

>=

>=

大於等於

<

&lt;

小於

<=

&lt;=

小於等於

&

&amp;

'

&apos;

單引號

"

&quot;

雙引號

3. 配置請求參數

單擊API編輯頁面右側的請求參數,配置各項參數。

說明
  • 進行結果預覽前請設定API參數的樣本值、預設值、描述等資訊。

  • 盡量將有索引的欄位設定為請求參數。

  • 進階SQL模式下,系統無法自動解析參數,請根據SQL指令碼手動新增所有請求參數至列表中。

  • 嚮導模式不支援對同一欄位配置兩個參數形成取值區間,如需此功能請使用指令碼模式。

參數

描述

參數名稱

支援英文、數字、底線、連字號(-),以英文開頭,不超過64個字元。

綁定欄位

僅嚮導模式可見。預設不可修改,與所選資料表欄位綁定。如需修改綁定關係,請使用指令碼模式。

參數類型

支援STRING、INT、LONG、FLOAT、DOUBLE、BOOLEAN。

參數位置

QUERY或BODY。選擇BODY時需設定Content-Type(支援JSON、XML、FORM三種格式)。

操作符

僅嚮導模式可見。定義請求參數與賦值之間的比較關係,支援:=LIKEINNOT INNOT LIKE!=><>=<=

說明

當資料來源類型為Table Store時,操作符僅支援=

是否必填

控制調用時該參數是否必填。

示例值

該請求參數的樣本值。

默認值

該請求參數的預設值。

描述

該請求參數的簡要說明。

4. 配置返回參數與分頁

單擊API編輯頁面右側的返回參數,配置參數名稱、參數類型、樣本值和描述。進階SQL模式下請根據SQL指令碼手動新增所有返回參數。

高級配置地區,設定是否開啟返回結果分頁

  • 不開啟:API預設最多返回2000條記錄。

  • 開啟:可在服務資源組頁面根據資源群組類型設定單頁條數上限。

開啟分頁後,系統自動增加以下公用參數:

  • 公用請求參數:returnTotalNum(是否返回資料總條數)、pageNum(當前頁號)、pageSize(每頁記錄數)。

  • 公用返回參數:pageNumpageSizetotalNum(總記錄數)。

說明
  • 若API無請求參數,則必須開啟返回結果分頁。

  • 指令碼模式中,若在SQL中使用了limit限制,開啟分頁後limit不生效,以分頁配置為準。

5. 配置過濾器(可選)

當您需要對API的請求參數進行預先處理或對查詢結果進行二次加工時,在右側導覽列單擊過濾器,根據需要勾選使用前置過濾器使用後置過濾器,選擇函數類型後選擇目標函數。可添加多個函數,執行時按添加順序處理。建立和使用過濾器詳情請參見建立Aviator函數建立Python函數

說明
  • 當使用Python函數作為過濾器時,請先開通DataWorks專業版及以上版本,並使用公用資料服務資源群組。

  • 當使用Aviator函數作為過濾器時,無DataWorks版本限制,但需要使用獨享資料服務資源群組。

  • 若在過濾器下拉式清單中無法擷取目標函數,請檢查函數是否發行。詳情請參見發布函數

6. 佈建服務資源群組

在右側導覽列單擊服務資源組,配置API調用時使用的資源群組類型。

支援獨享服務資源組公共服務資源組。獨享服務資源群組可選擇目標資源群組名稱;公用服務資源群組由DataWorks內部自動維護。

說明
  • 公用服務資源群組僅建議在測試情境使用,不建議在生產情境使用。

  • 若在列表中未看到目標資源群組,請進入資源群組列表頁,將資源群組與工作空間進行綁定。

環境配置地區,可設定記憶體超時時間單次請求數據條數上限

  • 逾時時間:API Gateway共用執行個體不超過30000ms;API Gateway專享執行個體下獨享資源群組不超過90000ms。

    說明

    API的回應時間取決於SQL實際執行時間,請合理配置逾時時間,避免因響應逾時導致請求失敗。

  • 單頁條數上限:公用服務資源群組最多2000條,獨享服務資源群組最多10000條。API返回結果總數暫無上限控制。

步驟六:儲存並提交

單擊工具列中的儲存表徵圖,儲存API後,所選資源群組將在測試時生效。

後續步驟

  • 測試與發布

    • 配置API後,您可以對其進行測試。詳情請參見測試API

    • 測試成功後,單擊右上方的提交

    • 在API編輯頁面的右側導覽列中,單擊版本,找到待申請版本單擊申請發布跳轉到申請頁面,申請類型預設為發布數據服務API,填寫申請原因後單擊申請權限完成發布申請。

      說明

      工作空間定義審批流後需要走流程審批才發行就緒API,詳情請參見:核准中心概述

    • 發布API後,服務資源群組的配置即可在調用API時生效。

  • 管理API:您還可以在服務開發頁面左側分類樹中對目標API進行複製和刪除等操作。您也可以在服務管理頁面,展開API列表,查看發行API的詳情。詳情請參見查看、刪除、移動、複製、大量操作、程式碼搜尋API

附錄:嚮導模式轉指令碼模式

您可以將嚮導模式產生的API轉換為指令碼模式:

  1. 服務開發頁面,展開目標API所在的業務流程 > API

  2. 雙擊相應的API名稱,開啟該API的編輯頁面。

  3. 單擊工具列中的轉換指令碼表徵圖。

  4. 提示對話方塊中,單擊確定

    警告
    • 僅支援將嚮導模式轉換為指令碼模式。

    • 轉換後無法回退至嚮導模式,請謹慎操作。

附錄:進階SQL(MyBatis文法)樣本

以下樣本展示指令碼模式下使用進階SQL編寫複雜查詢邏輯的常見情境。使用時請將表名、欄位和查詢條件替換為您的實際內容。

樣本1:通過條件控制返回結果的排序方式

通過var的值決定使用哪種排序方式。

select col01,col02
from table_name
<choose>
    <when test='var == 1'>
    order by col01
    </when>
    <when test='var == 2'>
    order by col02
    </when>
    <when test='var == 3'>
    order by col01,col02
    </when>
    <when test='var == 4'>
    order by col02,col01
    </when>
</choose>

請求參數:var(類型INT,必填)。返回參數:col01col02

樣本2:通過條件控制查詢不同的資料表

通過var的不同取值控制查詢不同的表。

select col01
from
<choose>
 <when test='var == 1'>
 table_name01
 </when>
 <when test='var == 2'>
 table_name02
 </when>
</choose>

樣本3:通過判斷欄位值是否為空白控制where查詢條件

根據list集合是否為空白,動態產生查詢條件。若list不為null,則產生包含area欄位值的查詢條件。

SELECT area_id, area, amount
FROM table_name
<where>
	<if test='list!=null'>
	area in
		<foreach collection="list" open="(" close=")" separator="," item="area">
		#{area}
		</foreach>
	</if>
</where>

請求參數:list(類型STRING_LIST,必填,樣本值:北京市,杭州市)。返回參數:area_idareaamount

附錄:最佳實務 — 選填參數設定

在實際業務中,經常需要部分請求參數為可選——調用方可自行決定是否傳入某個參數值,未傳值時該參數不參與查詢條件。以下以ods_user_info_d表為例,將uid設為必填參數,gender設為選填參數。

欄位名稱

欄位類型

描述

uid

INT

使用者ID

gender

STRING

性別

age_range

STRING

年齡段

zodiac

STRING

星座

嚮導模式實現選填參數

嚮導模式下實現選填參數非常簡單:在選擇參數地區勾選uidgender為請求參數後,在右側請求參數面板中,將gender是否必填取消勾選即可。

  • 勾選:調用API時必須傳入具體值,否則將出現參數校正異常。

  • 不勾選:調用API時允許自行選擇傳入或不傳入。未傳值時,該參數不作為查詢條件。

調用效果:

  • 情況一:uidgender均傳值,執行查詢:

    SELECT uid, gender, age_range, zodiac
    FROM ods_user_info_d
    WHERE uid = 0016359810821
    AND gender = '女';
  • 情況二:僅uid傳值,gender未傳值,執行查詢:

    SELECT uid, gender, age_range, zodiac
    FROM ods_user_info_d
    WHERE uid = 0016359810821;

指令碼模式實現選填參數

重要

基礎SQL無法實現真正的選填邏輯。即使取消勾選是否必填,未傳值時將按參數 = null查詢(通常返回空結果),而非忽略該條件。如需選填參數,請選擇進階SQL模式。

在進階SQL模式下,通過MyBatis的<if>標籤實現條件判斷:

SELECT uid, gender, age_range, zodiac
FROM ods_user_info_d
<where>
    <if test='gender!=null'>
    gender = ${gender}
    </if>
    and uid = ${uid}
</where>
  • <where>標籤會自動處理WHERE關鍵字和多餘的AND/OR首碼。

  • <if test='gender!=null'>表示僅當gender參數傳入非空值時,才將其加入查詢條件。

  • 配置完SQL後,在右側請求參數面板中手動添加uidgender參數,並將gender是否必填取消勾選。

調用效果與嚮導模式一致:傳值時gender條件生效,未傳值時條件被跳過。

選填參數設定總結

方式

實現方法

複雜度

適用情境

嚮導模式

取消勾選"是否必填"

簡單

單表簡單查詢

指令碼模式(基礎SQL)

不支援

指令碼模式(進階SQL)

使用<if test='param!=null'>包裹條件

中等

多表關聯、複雜查詢