這個Web API的背後,其實是一個資料庫存取服務器(DbServices,也就是本系列重點),主要採用DotNet 8、C#與Dapper 技術。由於Dapper需要自行撰寫SQL,也就演變成開發SQL產生器。由於各家資料庫廠商支援的SQL有共通標準,也會有私有指令,所以在支援服務層級架構上,就得稍做設計。 目前支援MS-SQL與SQLite,Oracle與MySQL有提供,但沒有仔細測試。至於其他的資料庫,只要補上自己特殊的語法即可。
DbServices 需求情境是企業內部使用,所以並沒有建置授權認證機制。本系列文章,僅是開發心得分享,並不足以當作學習教材,程式仍有許多改善空間。
使用情境
Web API是應用DbServices的其中一種,這種情境下前端就比較不受限。另一種情境是直接使用SDK,各項支援功能就會比較複雜多樣。這邊先以Web API來簡易說明。測試環境是使用SQLite。在設定好資料庫連線字串後,執行專案即可得到Swagger介面。
取得資料表清單
首先使用GET /meta服務,來取得此資料庫所有資料表。SDK可設定是否需要包含View。取得資料表內容
使用GET /{resourceName}/fieldSet服務,輸入資料表名稱,就可以得知此資料表的所有資訊。圖中為例,PersonTable總共有六個欄位,詳情參照FieldDefine。有3筆記錄。
取回欄位可能值
有時候可能需要先知道某資料表的某欄位可能包含哪些值,例如要處理列舉型態。則可使用GET /{resourceName}/valueSet這個服務。輸入資料表與欄位名稱即可。取回資料表所有紀錄
使用GET /{resourceName}服務,在沒有打查詢條件時,則會取回所有紀錄。DbService SDK並沒有提供複雜的Order By等機制,基本上概念是配合前端Data Grid來使用。這方面的元件選擇性多元化。
依條件取回記錄
同樣使用GET /{resourceName}服務,可以再加上查詢條件。SDK還有提供其他機制,例如補上opertor,多個Key-Value,直接補上where子句內容。取回特定紀錄
使用GET /{resourceName}/{id}則可利用id取回特定記錄。新增記錄
使用POST /{resourceName}服務,輸入資料表名稱以及在Body補上JSON內容,即可新增一筆資料。驗證看看。確實name=ZZ這筆已經存進去了。
更新紀錄
使用PUT /{resourceName}/{id}可以用來更新每特定記錄。驗證看看,確實id=4這筆資料已經被更新了。
刪除記錄
使用DELETE /{resourceName}/{id}刪除特定記錄。
結語
此處僅是簡單運用Web API功能,但已經足以滿足整合案中所需。Web API僅是資料服務,流程邏輯處理還是需要前端。而這個Web API背後所用到DbService是用來簡化資料庫存取機制。只要告知是什麼資料庫,一換資料庫連線字串,立刻可以操作資料表。在實務上,確實會發生資料提供端得同時面對多種資料庫來源。
後續就慢慢來介紹DbService SDK的設計理念與應用。
沒有留言:
張貼留言