共用方式為


搭配使用組態檔環境與數據 API 產生器

本指南會逐步解說使用組態檔以開發環境為目標的步驟。 最終結果組態檔應具有足夠的彈性,以最少變更在未來新增生產資料庫組態。

必要條件

Create SQL 資料表和數據

Create 此範例案例中要使用的虛構數據數據表。

  1. 使用您慣用的用戶端或工具連線到 SQL Server 和資料庫。 範例包括但不限於:SQL Server Management StudioAzure Data Studio適用於 Visual Studio Code 的 SQL Server 延伸模組

  2. Create具有 idname 數據行的Books數據表。

    DROP TABLE IF EXISTS dbo.Books;
    
    CREATE TABLE dbo.Books
    (
        id int NOT NULL PRIMARY KEY,
        title nvarchar(1000) NOT NULL,
        [year] int null,
        [pages] int null
    );
    GO
    
  3. 將四個範例書籍數據列插入 Books 數據表中。

    INSERT INTO dbo.Books VALUES
        (1000, 'Practical Azure SQL Database for Modern Developers', 2020, 326),
        (1001, 'SQL Server 2019 Revealed: Including Big Data Clusters and Machine Learning', 2019, 444),
        (1002, 'Azure SQL Revealed: A Guide to the Cloud for SQL Server Professionals', 2020, 528),
        (1003, 'SQL Server 2022 Revealed: A Hybrid Data Platform Powered by Security, Performance, and Availability', 2022, 506)
    GO
    
  4. 使用簡單的 SELECT * 查詢來測試您的數據。

    SELECT * FROM dbo.Books
    

Create 基底組態檔

使用 DAB CLI Create 基準組態檔。

  1. 使用 Create 一般組態檔dab init

    dab init --database-type "mssql" --host-mode "Development"
    
  2. 使用 dab add新增 Book 實體。

    dab add Book --source "dbo.Books" --permissions "anonymous:*"
    
  3. 觀察您目前的 dab-config.json 組態檔。 檔案應該包含 API 的基準實作,其中包含單一實體、REST API 端點和 GraphQL 端點。

    {
      "$schema": "https://github.com/Azure/data-api-builder/releases/download/v0.10.23/dab.draft.schema.json",
      "data-source": {
        "database-type": "mssql",
        "connection-string": "",
        "options": {
          "set-session-context": false
        }
      },
      "runtime": {
        "rest": {
          "enabled": true,
          "path": "/api",
          "request-body-strict": true
        },
        "graphql": {
          "enabled": true,
          "path": "/graphql",
          "allow-introspection": true
        },
        "host": {
          "cors": {
            "origins": [],
            "allow-credentials": false
          },
          "authentication": {
            "provider": "StaticWebApps"
          },
          "mode": "development"
        }
      },
      "entities": {
        "Book": {
          "source": {
            "object": "dbo.Books",
            "type": "table"
          },
          "graphql": {
            "enabled": true,
            "type": {
              "singular": "Book",
              "plural": "Books"
            }
          },
          "rest": {
            "enabled": true
          },
          "permissions": [
            {
              "role": "anonymous",
              "actions": [
                {
                  "action": "*"
                }
              ]
            }
          ]
        }
      }
    }
    

Create 環境變數檔案

現在,新增環境檔案來儲存 DAB 的環境變數。

  1. Create 與 DAB CLI 組態檔位於相同目錄中名為 .env 的檔案。

注意

.env檔名,例如 .gitignore.editorconfig 檔案沒有檔名,只有擴展名。 名稱不區分大小寫,但慣例為小寫。

  1. DAB_ENVIRONMENT新增值為的Development環境變數。 此外,使用您的資料庫 連接字串 新增SQL_DOCKER_CONNECTION_STRING環境變數。

    SQL_DOCKER_CONNECTION_STRING=<connection-string>
    DAB_ENVIRONMENT=Development
    

Create 環境組態檔

最後,新增具有目前組態與所需環境組態差異的開發組態檔。

  1. 建立 dab-config.Development.json 檔案。 新增下列內容,以使用 @env() 函式在開發環境中設定您的 connection-string 值。

    {
      "$schema": "<https://github.com/Azure/data-api-builder/releases/latest/download/dab.draft.schema.json>",
      "data-source": {
        "database-type": "mssql",
        "connection-string": "@env('SQL_DOCKER_CONNECTION_STRING')"
      }
    }
    
  2. 變更儲存至 .envdab-config.jsondab-config。Development.json 檔案。

測試設定

  1. 使用 dab start 驗證工具會如預期般啟動。

    dab start
    
  2. 工具的輸出應該包含用來巡覽至執行中 API 的位址。

          Successfully completed runtime initialization.
    info: Microsoft.Hosting.Lifetime[14]
          Now listening on: <http://localhost:5000>
    info: Microsoft.Hosting.Lifetime[0]
    

    提示

    在此範例中,應用程式正在埠 5000localhost執行。 執行中的應用程式可能會有不同的位址和埠。

  3. 首先,向 發出 GET 要求, /api/Book以手動嘗試 API。

    提示

    在這裡範例中,URL 會是 https://localhost:5000/api/Book。 您可以使用網頁瀏覽器流覽至此 URL。

  4. 接下來,流覽至 位於 /swagger的 Swagger 檔頁面。

    提示

    在這裡範例中,URL 會是 <https://localhost:5000/swagger。 同樣地,您可以使用網頁瀏覽器流覽至此 URL。

  5. 最後,流覽至 /graphql 並執行這項作業,以嘗試 GraphQL 端點。

    query {
      books(filter: {
        pages: {
          lt: 500
        }
      }) {
        items {
          id
          title
          year
          pages
        }
      }
    }
    

    提示

    在這裡範例中,URL 會是 https://localhost:5000/graphql。 同樣地,您可以使用網頁瀏覽器流覽至此 URL。