開發的API只有通過測試並發布至資料服務市場,使用者才可以在資料服務市場中查詢並申請調用該API的許可權。本文為您介紹如何測試API並將API發布至資料服務市場。
前提條件
在開始執行操作前,請確認您已完成API的建立。更多資訊,請參見建立API。
API調用/測試直連模式和代理模式說明
資料服務支援直連模式和代理模式調用API,若API關聯了行級許可權,則根據調用模式確認鑒權方式。
直連模式:在行級許可權中申請資料服務應用的行級許可權,使用應用進行鑒權。
代理模式:若應用需代理使用者的行級許可權調用API,需在行級許可權中申請資料服務應用的行級許可權,再為應用申請API的代理許可權,即可代理使用者調用API。
API的許可權管控分成欄位級許可權及行級許可權。其中,行級許可權的鑒權模式包括直連模式和代理模式。
API關聯了行級許可權且應用具有代理許可權,若DelegationUid參數未設定/為空白,則使用直連模式調用API;若DelegationUid非空,則使用代理模式調用API。
API測試頁面頂部地區操作
查看網域名稱:在頁面頂部可以查看網域名稱,該網域名稱僅用於自我裝載,用於用戶端調用的網域名稱,請參見查看網域名稱。
切換API:支援在頁面左上方切換查看已提交或發行的API。支援根據API的名稱或ID模糊搜尋API,搜尋當前服務專案下有許可權的API進行切換,系統將為您推薦您在當前專案下訪問過(包括查看、編輯、測試、新增)的最近9條API。
切換API運行環境:支援切換API運行環境進行API測試。當運行環境為開發環境時,使用開發資料來源進行測試;當運行環境為生產環境時,使用生產資料來源進行測試。如果API未發布,則無法切換為生產環境進行測試。
說明若API為Basic模式,且運行環境為開發環境時,測試API時會使用生產資料來源進行測試。
切換API版本:支援在測試頁面的右上方切換版本進行測試。當運行環境為開發環境,支援選擇已提交的版本;當運行環境為生產環境,支援選擇發行的版本。
步驟一:測試API
在Dataphin首頁的頂部功能表列,選擇服務 > API開發。
在左上方選擇服務專案,在左側導覽列選擇API服務 > API,進入API頁面。
在API頁面單擊目標API操作列下的測試表徵圖,進入API測試頁面。
在API頁面單擊目標API操作列下的更多-版本管理,進入版本管理面板,再單擊目標API操作列下的測試,進入API測試頁面。
在API測試頁面,您可以輸入參數值來驗證返回參數是否符合預期。
配置業務請求參數列表地區的參數。
當操作類型為GET、LIST時,測試輸入值為業務資料中的欄位值,列表參數是您建立API時配置的請求參數。
當操作類型為Create、Update、Delete時,列表欄位是您建立API時配置的請求參數,您可以進行如下操作進行添加、複製或刪除參數。
添加參數項:單擊添加參數項按鈕,根據欄位後的提示輸入參數值,支援添加不超過API最大輸入條數的資料。
大量新增:單擊大量新增,在大量新增業務請求參數對話方塊中,輸入參數執行個體值,每組參數按行分隔,支援為參數添加分隔字元和文本限定符。
分隔字元:用於分隔欄位的字元,多個參數之間支援使用半形逗號(,)、半形分號(;)、豎線(|)、定位字元(\t)、其他(自訂輸入,可輸入多個字元)分隔。
文本限定符:用於定義文字欄位的字元,支援無、雙引號("")、單引號('')。
全屏輸入:單擊全屏輸入,再單擊底部添加1行參數項、添加5行參數項、添加10行參數項快捷添加行數。
複製:單擊操作列下的複製表徵圖,系統將複製當前行參數值並在末尾新增一行填充。
刪除:單擊操作列下的刪除表徵圖或選中列表參數,單擊底部大量刪除按鈕,整行刪除參數。
配置公用請求參數列表地區的參數。
當API類型為直連資料來源API(查詢類型)或服務單元API時,系統根據API不同的請求方式,展示不同的參數(PageStart、PageSize和OrderByList)。
開啟分頁查詢,若API操作類型為LIST,展示PageStart、PageSize和OrderByList參數;若API操作類型為GET,展示OrderByList參數。
關閉分頁查詢,若API操作類型為LIST,展示OrderByList參數,您可以取消選中隱藏參數,展示PageSize和OrderByList參數。
當API類型為直連資料來源API(查詢類型)、服務單元API或組合API且關聯線級許可權開啟時,展示AccountType、DelegationUid參數。
當API類型為直連資料來源API(操作類型)時,僅展示ApiVersion參數。
說明測試API時,輸入參數字元長度不超過1000個;若直接調用API,則無字元長度限制。
參數
描述
調試輸入值
AccountType
當使用代理模式認證時,需要指定代理使用者的帳號類型。
ACCOUNT_NAME:Dataphin的使用者名稱。
USER_ID: Dataphin內部的唯一ID。
SOURCE_USER_ID:源系統帳號ID。
說明僅當設定了DelegationUid時,需要配置此參數。若未填寫此參數,則預設類型為USER_ID。
選擇指定代理使用者的帳號類型,支援選擇ACCOUNT_NAME、USER_ID、SOURCE_USER_ID。
DelegationUid
被代理訪問的使用者,需根據所選AccountType的類型,傳入對應帳號ID。設定該參數後,使用代理模式的認證方式。
僅支援當前租戶帳號作為DelegationUid。
ApiVersion
用於指定調用API的版本,預設使用最新版本。
調試輸入值從頁面右上方切換版本擷取。
說明當運行環境為開發環境,支援apiVersion參數,僅可選擇已提交的API進行調用。
PageStart
用於定義返回資料從第幾條開始展示。
配置成正整數,例如2。
PageSize
用於定義每頁返回多少資料。
配置成正整數,例如56。
OrderByList
用於定義多個返回參數的排序方式。如果沒有填寫,則預設為升序排列。
調試輸入值需要從業務請求參數列表中擷取。
ReturnTotalNum
用於定義是否返回結果總行數,當
ReturnTotalNum=true時,返回結果總行數,但對效能有一定損耗。當API操作類型為List且開啟分頁查詢時展示此參數。
配置成正整數,例如1000。
當API類型為直連資料來源API(查詢類型)、服務單元API或組合API且關聯線級許可權開啟時,在行級許可權列表地區展示當前API版本及環境對應的所關聯的已開啟的行級許可權資訊,包括行級許可權名稱、描述說明。
在可選返回參數列表地區選取項目返回參數。返回參數的列表為已選擇的API版本對應的API返回參數。
當操作類型為GET、LIST時,您需要選擇至少一個返回參數才能測試API。
當操作類型為Create、Update、Delete時,系統預設全部勾選,不可取消。
配置API的協議和返回條數。
參數
描述
協議
如果您建立API時選擇協議是HTTP和HTTPS,則調試API時可以選擇協議。
返回條數
用於定義測試API時返回資料的條數:
如果請求方式為LIST,則支援選擇返回條數,最大可返回10000條資料。
請求方式為GET,不支援修改返回條數。
配置完成後,單擊返回條數後的調試/測試,進行API與資料來源資料的連通性測試。
API測試時,支援單擊查看指令碼,查看SQL的指令碼,方便對比查詢結果是否符合指令碼處理預期。
說明若註冊API、模型API無SQL指令碼,則無法查看。
調用組合API時,若組合API引用的API有行級許可權管控,需將AccountType和DelegationUid參數傳入到引用的API。
使用代理模式調用組合API,僅需申請組合API的代理許可權即可。
若API調用模式為非同步模式,API測試/調試後,查詢結果將在測試結果地區展示,您可以在測試結果中查看您的運行結果、日誌、代碼等資訊,非同步查詢的流程請參見非同步呼叫流程說明。
查看請求結果:單擊調用API頁簽,再單擊返回結果頁簽,可查看調用API的Body返回的請求結果。
指令碼代碼:單擊調用API頁簽,再單擊指令碼代碼頁簽,可查看編寫的SQL語句。
查看日誌:單擊擷取查詢狀態頁簽,查看API調用時的執行日誌。如需取消API測試/調試,可單擊取消查詢,取消查詢請求。
查看查詢結果:單擊擷取查詢結果頁簽,可查看調用API的Body返回的最終查詢結果。
在返回結果/測試結果地區,查看測試結果。
如果測試失敗,您可以查看附錄:錯誤碼及解決方案。
僅測試API時支援操作。單擊底部的API授權按鈕,支援將API授權給應用,詳情請參見資料服務許可權管理。
步驟二:發布API
單個發布API
在API列表頁面,單擊目標API操作列下的發布表徵圖。
在API發布對話方塊中,選擇需要發布的版本。
若API存線上上版本,系統將校正是否存在參數變更以及依賴,以此判斷是否觸發專案中設定的發布管控機制。您可以對目標API執行去回收、去查看操作。
去回收:單擊去回收跳轉至管理中心 > 許可權管理 > 資料服務許可權(許可權管理下)> API許可權頁簽,當前API許可權回收對話方塊,您可將該API許可權回收。
去查看:單擊去查看跳轉至服務 > 開發 > API頁面,系統會為您篩選出當前API,您可以編輯該組合API,去除對該組合API的引用或刪除群組合API。
若沒有該組合API的許可權,您可以聯絡對應的組合API負責人,進行編輯組合API去除對該API的引用或刪除群組合API。
說明僅超級管理員和資料服務的專案系統管理員支援回收API許可權。
若線上已有發布的版本,則API發布新版本到線上的過程中會對參數進行校正,包括新增必填請求參數、刪減請求參數、刪減返回參數以及變更請求參數的資料類型,若存在任一變更,API發布將根據所屬專案中設定的發布管控機制進行阻塞或發布。
如果API發布管控中API已授權給應用設定為阻塞發布,則需要回收API的許可權,才能繼續發布。
如果發布管控中API已被組合API引用設定為阻塞發布,則需要編輯組合API去除對該API的引用或刪除群組合API,才能繼續發布。
如果發布管控兩個配置項都選擇阻塞發布,則需要回收API許可權的同時還需要編輯組合API去除對該API的引用或刪除群組合API,才能繼續發布。
單擊確認,將API發布至生產環境。
批量發布API
在API列表頁面,選中API列表中需發布的API,單擊底部的批量發布。
在API批量發布對話方塊中,選擇需要發布的版本,若API的最新版本為已提交版本,系統預設為您填充此版本。
單擊確認,在API批量發布詳情對話方塊中查看API是否發布成功,若發布失敗,可單擊錯誤詳情原因後的查看,查看具體失敗原因。
說明基於邏輯表建立的API不支援批量發布。
批量發布時,若未選擇版本,則該API不進行發布。
後續業務應用使用者可以在資料服務總覽頁面查詢並申請調用API的許可權。
僅已提交的API支援發布到線上。
新版本發布到線上會影響API的調用,您可以在專案中設定不同的發布管控機制,在API發布時會根據其所屬專案的配置進行阻塞或發布,詳情請參見建立服務專案。
基於服務單元建立的API,在發布時會對引用的欄位在所屬的服務單元中是否存在進行校正;基於資料來源建立的API,在發布時會對引用的欄位在所屬的資料來源中是否存在進行校正。
當開啟資料服務高可用模組,基於資料來源建立的API,在發布時不校正備鏈路的資料來源及其該資料來源中引用的表或欄位是否存在。
附錄:錯誤碼及解決方案
錯誤碼 | 代碼說明 | 解決方案 |
DPN-OLTP-COMMON-000 | 成功。 | 無。 |
DPN.Oltp.Common.Running | 運行中。 | 無。 |
DPN-OLTP-COMMON-001 | 系統發生未知異常。 | 請提交工單,或聯絡Dataphin的技術服務人員協助處理。 |
DPN-OLTP-COMMON-002 | 參數異常。 | 請檢查參數的正確性。 |
DPN-OLTP-COMMON-003 | 不支援。 | 無。 |
DPN-OLTP-COMMON-004 | SQL解析異常。 | SQL語句中未定義欄位別名,請檢查並修改SQL語句。 |
DPN-OLTP-COMMON-005 | SQL注入檢查未通過。 | / |
DPN-OLTP-ENGINE-000 | 查詢逾時。 | / |
DPN-OLTP-ENGINE-001 | 參數錯誤。 | 檢查設定的參數。 |
DPN-OLTP-ENGINE-002 | 對象找不到。 | 請提交工單,或聯絡Dataphin的技術服務人員協助處理。 |
DPN-OLTP-ENGINE-003 | 不支援。 | 無。 |
DPN-OLTP-ENGINE-004 | 通訊表錯誤。 | 無。 |
DPN-OLTP-ENGINE-005 | SQL解析失敗。 | 請提交工單,或聯絡Dataphin的技術服務人員協助處理。 |
DPN-OLTP-ENGINE-006 | 中繼資料錯誤。 | |
DPN-OLTP-ENGINE-007 | 參數處理錯誤。 | |
DPN-OLTP-ENGINE-008 | 構建執行模型錯誤。 | |
DPN-OLTP-ENGINE-009 | 執行失敗。 | |
DPN-OLTP-ENGINE-010 | 資料來源錯誤。 | |
DPN-OLTP-ENGINE-011 | HBase引擎不支援。 | 無。 |
DPN-OLTP-ENGINE-012 | 對象序列化失敗。 | 請提交工單,或聯絡Dataphin的技術服務人員協助處理。 |
DPN-OLTP-ENGINE-013 | 許可權校正失敗。 | 請申請資料表的許可權,具體操作請參見申請、續期和交還表許可權。 擷取對應資料表許可權後,還是未能解決該問題,請提交工單,或聯絡Dataphin的技術服務人員協助處理。 |
DPN-OLTP-ENGINE-014 | Elasticsearch引擎不支援。 | 無。 |
DPN-OLTP-ENGINE-015 | MongoDB引擎不支援。 | 無。 |
DPN-OLTP-ENGINE-016 | 欄位類型錯誤。 | 檢查配置的欄位類型是否與資料來源的欄位類型不一致。 |
DPN-OLTP-ENGINE-017 | Redis緩衝異常。 | 請提交工單,或聯絡Dataphin的技術服務人員協助處理。 |
DPN-OLTP-ENGINE-018 | 跨資料來源不支援。 | 無。 |
DPN-OLTP-ENGINE-019 | 資料類型編碼或者參數類型轉換失敗。 | 請提交工單,或聯絡Dataphin的技術服務人員協助處理。 |
DPN-OLTP-ENGINE-20 | 熔斷。 | |
DPN-OLTP-ENGINE-020 | 應用無API的行級許可權代理許可權。 | 請申請API代理許可權,請參見管理API許可權。 |
DPN-OLTP-ENGINE-21 | 限流。 | 您可以配置API限流,以降低請求並發量。 |
DPN-OLTP-ENGINE-22 | 查詢逾時。 | / |
DPN-OLTP-ENGINE-23 | 組合API的子API異常。 | / |
DPN-OLTP-ENGINE-24 | 無代理許可權。 | / |
DPN-OLTP-ENGINE-018-01 | 跨資料來源不支援Group By。 | 請檢查SQL。 |
DPN-OLTP-ENGINE-018-02 | 跨資料來源不支援Order By。 | |
DPN-OLTP-ENGINE-018-03 | 跨資料來源不支援沒有Where條件。 | |
DPN-OLTP-ENGINE-018-04 | 跨資料來源不支援PageStart不等於0。 | |
DPN-OLTP-ENGINE-018-05 | 跨資料來源不支援在Where條件中存在or的操作。 | |
DPN-OLTP-ENGINE-018-06 | 跨資料來源不支援在一個Select item中有來自多個物理表的欄位。 | |
DPN-OLTP-ENGINE-018-07 | 跨資料來源查詢必須所有的主鍵都在。 | |
DPN-OLTP-ENGINE-018-08 | HBase namespace不存在。 | / |
DPN.Oltp.Auth | 許可權校正失敗。 | / |
DPN.Oltp.Async.JobNotExists | 非同步API任務不存在。 | / |
DPN.Oltp.Async.JobStatusNotSupport | 非同步API任務狀態不支援該操作。 | / |
DPN.Oltp.Async.GetResultError | 非同步API擷取結果失敗。 | / |
DPN.Oltp.Oltp.JsonContentParseError | JSON內容解析失敗。 | / |
DPN.Oltp.Oltp.HttpRequestError | HTTP請求失敗。 | / |
DPN-OLTP-JDBC-001 | 要求標頭丟失Session。 | 檢查設定的參數是否正確。 |
DPN-OLTP-JDBC-002 | Session錯誤。 | 檢查Session ID和Account ID是否匹配。如果匹配,請提交工單,或聯絡Dataphin的技術服務人員協助處理。 |
DPN-OLTP-JDBC-003 | 使用者無權訪問資料庫。 | 請申請資料來源的許可權,具體操作請參見申請資料來源許可權。 擷取對應資料表許可權後,還是未能解決該問題,請提交工單,或聯絡Dataphin的技術服務人員協助處理。 |
DPN-OLTP-JDBC-004 | 使用者無權訪問資料表。 | 請申請資料表的許可權,具體操作請參見申請、續期和交還表許可權。 擷取對應資料表許可權後,還是未能解決該問題,請提交工單,或聯絡Dataphin的技術服務人員協助處理。 |
DPN-OLTP-JDBC-005 | Account Id出錯 | 檢查Account ID的正確性。 |
DPN-OLTP-JDBC-006 | 終止查詢。 | 無。 |
DPN.Oltp.Jdbc.ProjectForbidden | 無權修改該專案下的表。 | 請申請資料表的許可權,具體操作請參見申請、續期和交還表許可權。 擷取對應資料表許可權後,還是未能解決該問題,請提交工單,或聯絡Dataphin的技術服務人員協助處理。 |
DPN-OLTP-OLAP-001 | OLAP用戶端查詢資料來源失敗。 | 請檢查資料來源後,重連用戶端嘗試。如果仍失敗請提交工單,或聯絡Dataphin的技術服務人員協助處理。 |
DPN-OLTP-OLAP-002 | OLAP用戶端運行失敗。 | 請提交工單,或聯絡Dataphin的技術服務人員協助處理。 |
DPN.Oltp.Olap.SessionError | OLAP的Session錯誤。 | 檢查Session的正確性。 |
DPN.Oltp.Olap.SessionNotFound | OLAP的Session不存在。 | / |
後續步驟
測試與發布API後,您就可以在資料服務市場中查詢並申請調用的許可權。具體操作,請參見調用API。