Upgrade to Pro — share decks privately, control downloads, hide ads and more …

初探 Data API Builder:在幾分鐘內將資料庫轉換成 REST 和 GraphQL...

Alan Tsai
September 23, 2023

初探 Data API Builder:在幾分鐘內將資料庫轉換成 REST 和 GraphQL 不再是夢想

任何應用基本上都需要將資料儲存起來。在這種情況下,選擇之一就是使用資料庫。 然而,對於相對簡單的應用來說,為此建立一個後端 API 以提供資料可能顯得有些麻煩。 更不用說還需要考慮常見需求,如資安、分頁、排序等等。 如果有一個工具可以讓我們設計好資料庫,然後前端就可以直接串接,那該有多好!Data API Builder 就是這樣一個開源工具。 這個由微軟開發的工具不僅原生 Azure 資料庫服務有支援,也可以運行在你自己的本地資料庫上。 讓我們一起來探索Data API Builder 能為我們帶來什麼樣的好處吧!

Alan Tsai

September 23, 2023
Tweet

More Decks by Alan Tsai

Other Decks in Technology

Transcript

  1. 簡單的自我介紹 2 @Alan Tsai 的學習筆記 • Alan Tsai • 蔡孟玹

    • 後端工程師 - .NET 技術為主 • 喜歡學習不同東西 • Azure • Data Science、Chatbot • Container、DevOps • 加强開發的Tools、架構 • 翻譯文章/軟體 • 兩本翻譯書 • 三門線上課程 • 看小說、玩手游
  2. 喜歡技術分享 4 ▰ 2022 .NET Conf ▻ 談 Event Driven

    Architecture 之前 是不是該把 Event 規格搞定? CloudEvents 是什麼? | 邁上 Cloud Native App 之路 ▰ 2021 .NET Conf ▻ 不會 Javascript 沒關係 用 Blazor 來解決前端需求成為 Full Stack .NET 開發者吧 ▰ 2020 Global Azure ▻ Azure API Management 協助邁向Open API及Micro Service架構的好用服務 @Alan Tsai 的學習筆記
  3. 喜歡技術分享 5 ▰Trainocate ▻AZ-104、AZ-204、AZ-400、DP-200、DP-201、PL-900、DA-100 ▰緯創資通 ▻Github Copilot ▰台灣智慧自動化與機器人協會 ▻運用Python進行大數據分析、機器學習基礎理論課程及人工智慧 –

    ML.NET ▰中華電信學院 ▻Windows Container 技術實務班、使用Azure AI打造有人工智能的Line聊天機器人 ▻DevOps與CI/CD實務研習班 @Alan Tsai 的學習筆記
  4. Agenda 7 ▰Data API Builder (DAB) 是什麼?要解決什麼問題 ▰Demo: ▻Local 如何使用

    ▻Azure 如何使用 ▰展望 @Alan Tsai 的學習筆記 Preview
  5. 什麼是 Data API Builder (DAB) ? 15 @Alan Tsai 的學習筆記

    https://github.com/Azure/data-api-builder/tree/main
  6. 什麼是 Data API Builder (DAB) ? 16 @Alan Tsai 的學習筆記

    • Allow collections, tables, views and stored procedures to be accessed via REST and GraphQL • Support authentication via OAuth2/JWT • Support for EasyAuth when running in Azure • Role-based authorization using received claims • Item-level security via policy expressions
  7. 什麼是 Data API Builder (DAB) ? 17 @Alan Tsai 的學習筆記

    REST CRUD operations via POST GET PUT PATCH DELETE filtering, sorting and pagination GraphQL queries and mutations filtering, sorting and pagination relationship navigation
  8. 什麼是 Data API Builder (DAB) ? 18 @Alan Tsai 的學習筆記

    Easy development via dedicated CLI Full integration with Static Web Apps via Database Connection feature when running in Azure Open Source
  9. Scenario 20 @Alan Tsai 的學習筆記 ▰Local ▻Install DAB ▻Container MSSQL

    Database Setup ▻DAB Setup ▻API ▻GraphQL ▰Azure ▻Static Web App
  10. 準備 DAB 21 @Alan Tsai 的學習筆記 ▰需要是 .NET 6+ SDK

    ​​dotnet --list-sdks dotnet tool install --global Microsoft.DataApiBuilder dab --version
  11. 透過 Docker Container 22 @Alan Tsai 的學習筆記 ​​docker run -e

    "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=yourStrong(!)Password" -p 1433:1433 - d mcr.microsoft.com/mssql/server:2022-latest​ dab init --database-type "mssql" --connection-string "Server=localhost;Database=BookTest;User ID=sa;Password=yourStrong(!)Password;TrustServerCertificate=true" --host-mode "Development" dab start
  12. Browser 23 @Alan Tsai 的學習筆記 • healthy - https://localhost:5001 •

    ​Swagger - https://localhost:5001/swagger • API - https://localhost:5001/api/{entity} • GraphQL - https://localhost:5001/graphql
  13. 加入 Author 25 @Alan Tsai 的學習筆記 ​​dab add Author --source

    dbo.authors --permissions "anonymous:*"​​​
  14. Relationship 30 @Alan Tsai 的學習筆記 ​​dab update Author --relationship "books"

    --cardinality "many" -- target.entity "Book" --linking.object "dbo.books_authors"​​​ "relationships":{ "books":{ "cardinality":"many", "target.entity":"Book", "linking.object":"dbo.books_authors" } }"​
  15. 組合技:DB -> CDC -> DW -> DAB = Data API

    35 @Alan Tsai 的學習筆記 https://debezium.io/blog/2019/12/18/debezium-1-0-0-final-released/
  16. CREDITS Special thanks to all the people who made and

    released these awesome resources for free: ▰ Presentation template by SlidesCarnival ▰ Photographs by Startup Stock Photos 37 @Alan Tsai 的學習筆記