共用方式為


0.11 版和更早版本中的新功能

數據 API 產生器 0.11 版和更早版本中所有更新和增強功能的版本資訊和資訊。

0.11 版的新功能

數據 API 產生器 0.10 版中更新和增強功能的版本資訊和資訊。

SQL 數據倉儲的 GraphQL 支援

SQL 數據倉儲現在支援 GraphQL 端點。

增強的 Azure Cosmos DB for NoSQL 篩選

適用於 NoSQL 的 Azure Cosmos DB 現在支援使用 運算符進行巢狀篩選、標識符變數和字串數位搜尋 contains

使用命令行介面啟用應用程式數據收集

您現在可以使用 DAB 命令行介面 (CLI) 來啟用 Application Insights 的數據收集。

0.10 版的新功能

數據 API 產生器 0.10 版中更新和增強功能的版本資訊和資訊。

當我們接近正式運作時,我們的焦點會轉移到穩定性。 雖然本文並未詳述程式代碼品質與引擎穩定性的所有工作,但這份清單會醒目提示重大更新。

GitHub 版本資訊

請檢閱這些發行頁面,以取得所有變更和改善的完整清單:

記憶體內部快取

0.10 版引進 REST 和 GraphQL 端點的記憶體內部快取。 這項功能是專為內部快取所設計,為未來的分散式快取提供基礎。 記憶體內部快取可減少重複查詢的資料庫負載。

快取案例

  • 減少資料庫負載:快取會儲存昂貴查詢的結果,而不需要重複的資料庫呼叫。
  • 改善 API 延展性:快取支援更頻繁的 API 呼叫,而不會增加資料庫要求,大幅調整 API 的功能。

設定變更

快取設定可在 區段和每個實體中使用 runtime ,並提供細微的控制。

執行時間設定

{
  "runtime": {
    "cache": {
      "enabled": true,
      "ttl-seconds": 6
    }
  }
}
  • 預設會停用快取。
  • 默認存留時間 (TTL) 為 5 秒。

實體設定

{
  "Book": {
    "source": {
      "object": "books",
      "type": "table"
    },
    "graphql": {
      "enabled": true,
      "type": {
        "singular": "book",
        "plural": "books"
      }
    },
    "rest": {
      "enabled": true
    },
    "permissions": [
      {
        "role": "anonymous",
        "actions": [
          {
            "action": "*"
          }
        ]
      }
    ],
    "cache": {
      "enabled": true,
      "ttl-seconds": 6
    }
  }
}

CLI 中的組態驗證

CLI 現在支援 dab validate 檢查組態檔是否有錯誤或不一致,以增強開發工作流程。

驗證步驟

  1. 結構描述驗證
  2. 設定屬性驗證
  3. 設定許可權驗證
  4. 資料庫連線驗證
  5. 實體元數據驗證

預覽功能

  • 初始 DWSQL 支援。 #1864
  • 支援多個數據源。 #1709

0.9 版的新功能

以下是數據 API 產生器 0.9 中最相關變更和改進的詳細數據。

GitHub 版本資訊

請檢閱這些發行頁面,以取得所有變更和改善的完整清單:

在自我裝載 DAB 時啟用 Application Insights

記錄現在可以串流至 Application Insights,以取得更佳的監視和偵錯體驗,特別是在 Azure 中部署數據 API 產生器時。 您可以將新的 telemetry 區段新增至組態檔,以啟用及設定與 Application Insights 的整合:

"telemetry": {
    "application-insights": {
    "enabled": true,    // To enable/disable application insights telemetry
    "connection-string": "{APP_INSIGHTS_CONNECTION_STRING}" // Application Insights connection string to send telemetry
    }
}

閱讀 使用 Application Insights 檔頁面中的所有詳細數據。

支援忽略 REST 要求本文中的無關欄位

使用新的 request-body-strict 選項,您現在可以決定 REST 承載中是否有額外的欄位會產生錯誤, (預設行為、回溯相容) 或無訊息方式忽略額外欄位。

"runtime": {
    "rest": {
      "enabled": true,
      "path": "/api",
      "request-body-strict": true
    },
    ...
}

藉由將 request-body-strict 選項設定為 false,系統就會忽略沒有對應至相關資料庫物件的欄位,而不會產生任何錯誤。

新增 mssql 連線的應用程式名稱

數據 API 產生器現在只會在連接字串中插入資料庫 mssql 類型的值 dab-<version> 作為 Application Name 屬性,讓您更輕鬆地識別資料庫伺服器中的連接。 如果 Application Name 已存在於連接字串中,數據 API 產生器版本會附加至該連接字串中。

支援 time 中的數據類型 mssql

time 資料庫現在支援 mssql 數據類型。

數據表上具有觸發程序的變動 mssql

資料庫觸發 mssql 程式的數據表現在完全支援變異。

防止使用者更新/插入數據表中的唯讀欄位

自動偵測資料庫的唯讀欄位,並防止使用者更新/插入這些欄位。

0.8 版的新功能

以下是數據 API 產生器 0.8 中最相關變更和改進的詳細數據。

GitHub 版本資訊

請檢閱這些發行頁面,以取得所有變更和改善的完整清單:

已新增 .env 檔案的支援

環境變數 會防護純文本公開的秘密,並允許在不同設定中交換值。 不過,這些變數必須設定在使用者或計算機範圍中,如果重複變數名稱,可能會導致跨專案變數「內化」。 更好的替代方法是環境檔案。 如需詳細資訊,請參閱 數據 API 產生器中的環境檔案 - 部落格

0.7.6 版的新功能

本文說明 0.7.6 版的版本資訊。

GitHub 提取要求

建立 OpenAPI v3-0-1 描述檔的初始支援

數據 API 產生器支援 OpenAPI 標準,以產生和公開包含服務實用資訊的描述檔。 這些檔會從運行時間組態檔和每個資料庫物件的元數據建立。 這些物件與該相同組態檔中定義的 REST 啟用實體相關聯。 然後,它們會透過UI公開,並以串行化檔案的形式提供。

如需 OpenAPI 和數據 API 產生器的詳細資訊,請參閱 OpenAPI

允許合併組態檔

新增自動合併兩個組態檔的功能。

可以維護多個基準和環境特定組態檔,以簡化環境特定設定的管理。 例如,可以維護開發和生產環境的個別組態。 此步驟牽涉到具有不同環境之間所有通用設定的基底組態檔。 然後,藉由設定 DAB_ENVIRONMENT 變數,即可控制要合併哪些組態檔以供 Data API 產生器取用。

如需詳細資訊,請參閱 CLI 參考

在交易中執行 GraphQL 和 REST 變異

數據 API 產生器會建立資料庫交易,以執行特定類型的 GraphQL 和 REST 要求。

有許多要求牽涉到進行多個資料庫查詢才能完成。 例如,若要從更新傳回結果,必須先進行更新的查詢,然後必須先讀取新值再傳回。 當要求需要執行多個資料庫查詢時,數據 API 產生器現在會在單一交易內執行這些資料庫查詢。

您可以在 REST 檔和GraphQL 檔中的 GraphQL 內容中深入瞭解這項功能。

0.6.14 版的新功能

本文說明適用於 Azure 資料庫之數據 API 產生器的 2023 年 3 月版本修補程式。

錯誤修正

  • 解決 Cosmos 的查詢篩選存取遭拒問題。
  • Cosmos DB 目前不支援字段層級授權,為了避免使用者在運行時間設定中意外傳入 field 許可權的情況,我們新增了驗證檢查。

0.6.13 版的新功能

GitHub 上提供此版本的完整版本資訊清單: https://github.com/Azure/data-api-builder/releases/tag/v0.6.13

匯出 GraphQL 架構的新 CLI 命令

新增選項以匯出 GraphQL 架構。 這會啟動 DAB 伺服器,然後查詢它以取得架構,再將其寫入提供的位置。

dab export --graphql -c dab-config.development.json -o ./schemas

此命令會在 ./schemas 目錄中產生 GraphQL 架構檔案。 組態檔的路徑是選擇性參數,除非 'dab-config',否則預設為 'dab-config.json'。<>DAB_ENVIRONMENT.json』 存在,其中 DAB_ENVIRONMENT 是環境變數。

MsSql 建立動作的資料庫原則支援

MsSql 的所有 CRUD (建立、讀取、更新、刪除) 作業現在都支援資料庫原則。 例如:

"entities":{
  "Revenue":{
    "source": "revenues",
    "permissions":[
      "role": "authenticated",
          "actions": [
            {
              "action": "Create",
              "policy": {
                "database": "@item.revenue gt 0"
              }
            },
            "read",
            "update",
            "delete"
          ]
    ]
  }
}

實體的先前設定 Revenue 表示不允許執行角色 Authenticated 插入作業的使用者建立營收小於或等於零的記錄。

能夠設定 GraphQL 路徑,並透過 CLI 全域停用 REST 和 GraphQL 端點

我們現在支援命令的 init 三個選項:

  • graphql.path :提供自定義 GraphQL 路徑
  • rest.disabled:全域停用 REST 端點
  • graphql.disabled:全域停用 GraphQL 端點

例如, init 命令會產生具有運行時間區段的組態檔:

dab init --database-type mssql --rest.disabled --graphql.disabled --graphql.path /gql
"runtime": {
    "rest": {
      "enabled": false,
      "path": "/api"
    },
    "graphql": {
      "allow-introspection": true,
      "enabled": false,
      "path": "/gql"
    },
}

在 CLI 中新增和更新檢視的必要索引鍵欄位

用戶現在必須提供索引鍵字段 (做為主鍵) ,只要透過 dab add CLI 將新的資料庫檢視新增 () (新增至組態時,就會使用主鍵 source.key-fields) 。 此外,每當透過 dab update CLI在配置檔中透過) 更新檢視組態 (中的任何專案時,如果更新變更了與基礎 (資料庫中檢視定義相關的任何專案,例如來源類型、索引鍵欄位) ,則也必須在 update 命令中指定索引鍵字段。

不過,我們仍然支持檢視,但不在設定中指定明確的主鍵,但這類檢視的設定必須直接寫入組態檔中。

例如, dab add 命令可用來新增檢視:

dab add books_view --source books_view --source.type "view" --source.key-fields "id" --permissions "anonymous:*" --rest true --graphql true

此命令會產生類似下列範例的實體組態 books_view

"books_view": {
      "source": {
        "type": "view",
        "object": "books_view",
        "key-fields":[
          "id"
        ]
      },
      "permissions": [
        {
          "role": "anonymous",
          "actions": [
            "*"
          ]
        }
      ],
      "rest": true,
      "graphql": true
    }

因為 DAB 現在是開放原始碼的,所以我們不需要從記憶體帳戶下載成品。 相反地,我們可以直接從 GitHub 下載它們。 因此,會據以更新連結。

0.5.34 版的新功能

GitHub 上提供此版本的完整版本資訊清單: https://github.com/Azure/data-api-builder/releases/tag/v0.5.34

在運行時間層級接受已啟用 REST 和 GraphQL 的旗標

新增選項以允許在運行時間層級啟用或停用所有實體的 REST/GraphQL 要求。 如果全域停用,則不論個別實體設定為何,都無法透過 REST 或 GraphQL 要求存取任何實體。 如果全域啟用,除非實體層級設定明確停用,否則預設會存取個別實體。

"runtime": {
    "rest": {
      "enabled": false,
      "path": "/api"
    },
    "graphql": {
      "allow-introspection": true,
      "enabled": false,
      "path": "/graphql"
    }
  }

要求記錄中的相互關聯標識碼

為了協助偵錯,我們會將相互關聯標識元附加至要求期間產生的任何記錄。 由於可能會提出許多要求,因此有方法可識別特定要求的記錄,對於協助偵錯程式很重要。

引擎和 CLI 中預存程式的通配符作業支援

對於預存程式,角色現在可以使用通配符 * 動作進行設定,但只會擴充至 execute 動作。

0.5.32 版的新功能

GitHub 上提供此版本的完整版本資訊清單: https://github.com/Azure/data-api-builder/releases/tag/v0.5.32-beta

能夠透過 CLI 自定義 REST 路徑

命令中init引進了新的選項--rest.path,以自定義 REST API 的路徑。

dab init --database-type mssql --connection-string "Connection-String" --rest.path "rest-api" 

此命令會設定具有 前置詞的 rest-apiREST 端點。 REST 端點的完整路徑為 https://<dab-server>/rest-api/<entity-name>

未使用 選項時 --rest.path ,REST 端點會設定為預設前置詞 api。 在此情況下,完整路徑為 https://<dab-server>/api/<entity-name>

MAR 中的數據 API 產生器容器映像

適用於 Azure 資料庫之數據 API 產生器的官方 Docker 映射現在可在 Microsoft Artifact Registry 中使用。

如需使用已發佈映像的指示,請參閱 Microsoft 容器登錄 - 數據 API 產生器

支援 GraphQL 片段

片段是 graphQL 查詢的可重複使用部分。 在不同的查詢中必須查詢相同欄位的情況下,重複的欄位可以合併成稱為 fragment 的單一可重複使用元件。

如需片段的詳細資訊,請參閱 GraphQL 查詢

接下來會定義名為 description 的類型 Character 片段:

fragment description on Character {
  name
  homePlanet
  primaryFunction
}

使用已定義片段的 GraphQL 查詢可以建構如下所述:

{
  Player1: Player{
    id
    playerDescription{
        ...description
    }
  }
}

針對先前的查詢,結果會包含下列欄位:

{
 Player1: Player{
    id
    playerDescription{
        name
        homePlanet
        primaryFunction
    }
  }   
}

開啟 BinSkim 並修正 Policheck 警示

BinSkim 是可攜式可執行檔 (PE) 輕量掃描器,可驗證編譯程式/鏈接器設定和其他安全性相關的二進位特性。 管線中的 static-tools 管線工作會新增,以在每個管線執行時執行 BinSkim 掃描。 PoliCheck 系統是一組工具和數據,可協助符合文字和程式代碼檢閱需求,作為整體全域整備原則的一部分。 Policheck 掃描所產生的警示已修正為符合敏感性條款的規範。

0.5.0 版的新功能

GitHub 上提供此版本的完整版本資訊清單: https://github.com/Azure/data-api-builder/releases/tag/v0.5.0-beta

公用 JSON 架構

如果您使用支援 JSON 架構的 VISUAL Studio Code 之類的 IDE,則公用 JSON 架構可讓您支援「intellisense」。 在basic-empty-dab-config.json手動建立dab-config.json檔案時,資料夾中的檔案samples有範例起點。

公用 Microsoft.DataApiBuilder NuGet

Microsoft.DataApiBuilder 現在可 在這裡 以公用 NuGet 套件的形式提供,方便使用 dotnet 工具進行安裝,如下所示:

dotnet tool install --global Microsoft.DataApiBuilder

Azure SQL 中預存程式的新 execute 動作

只有在來源類型傳回 實體時,才會在組態檔的 區段中,引進新的execute動作作為唯一允許的stored-procedure動作permissions。 根據預設,這類實體只 POST 允許使用方法,而且只有 GraphQL mutation 作業會設定為其名稱新增前置詞 execute 。 明確指定組態檔 區段中允許methodsrest的 會覆寫此行為。 同樣地,對於 GraphQL,operationgraphql區段中的 可以改為覆寫 query 。 如需詳細資訊,請參閱 檢視和預存程式

新增 mappings 區段

mappings在每個 的 entity區段中,會針對 GraphQL 和 REST 端點定義資料庫物件功能變數名稱與其對應公開功能變數名稱之間的對應。

其格式為:

<database_field>: <entity_field>

例如:

  "mappings":{
    "title": "descriptions",
    "completed": "done"
  }

title相關資料庫物件中的欄位會對應至 description GraphQL 類型或 REST 要求和響應承載中的欄位。

支援 Azure SQL 中的工作階段內容

例如,若要啟用額外的安全性 (層,數據列層級安全性 (RLS) ) ,DAB 現在支援透過 SESSION_CONTEXT 將數據傳送至基礎 Sql Server 資料庫。 如需詳細資訊,請參閱此詳細檔,以SESSION_CONTEXT: 運行時間到資料庫授權

支援在 PostgreSQL 中文件內篩選巢狀物件

使用 PostgreSQL,您現在可以使用架構中定義的物件或陣列關聯性,讓您可以像 Azure SQL 一樣,對巢狀物件執行篩選作業。

query {
  books(filter: { series: { name: { eq: "Foundation" } } }) {
    items {
      title
      year
      pages
    }
  }
}

在 Cosmos DB NoSQL 中支援純量清單

現在已為 Cosmos DB 新增查詢 List 純量的功能。

請考慮此類型定義。

type Planet @model(name:"Planet") {
    id : ID,
    name : String,
    dimension : String,
    stars: [Star]
    tags: [String!]
}

現在可以執行擷取清單的查詢,例如

query ($id: ID, $partitionKeyValue: String) {
    planet_by_pk (id: $id, _partitionKeyValue: $partitionKeyValue) {
        tags
    }
}

使用記錄層級的增強記錄支援

  • 當 為與時host.mode,引擎的預設記錄層級會分別更新為 ErrorDebugDevelopmentProduction
  • 在引擎啟動期間,會記錄實體的每個數據行,例如公開的域名和主鍵等資訊。 此行為甚至會在自動產生欄位對應時發生類型。
  • 在本機執行案例中,會在引擎啟動期間產生和執行的所有查詢都會記錄在 Debug 層級。
  • 針對每個實體,會記錄 、target.fields、 和 cardinalitysource.fields關聯性欄位。 如果從資料庫 (或從組態檔推斷出多對多關聯性、 linking.objectlinking.source.fieldslinking.target.fields) 記錄。
  • 針對每個傳入要求,會記錄要求的角色和驗證狀態。
  • 在 CLI 中,版本 Microsoft.DataAPIBuilder 會連同與個別命令執行相關聯的記錄一起記錄。

已更新 CLI

  • --no-https-redirect 選項會新增至 start 命令。 使用這個選項時,可以防止要求從 http 自動重新導向至 https

  • 在 MsSql 中,您可以在 命令中使用 --set-session-context trueinit 來啟用會話內容。 這個範例會顯示範例命令:

    dab init --database-type mssql --connection-string "Connection String" --set-session-context true
    
  • 您可以使用 命令中的選項 --auth.provider、、 --auth.audience--auth.issuer. 來設定驗證詳細數據,例如提供者、對象和簽發 init 者。 這個範例會顯示範例命令:

    dab init --database-type mssql --auth.provider AzureAD --auth.audience "audience" --auth.issuer "issuer"
    
  • 未指定實體名稱時,用戶易記的錯誤傳訊。

0.4.11 版的新功能

GitHub 上提供此版本的完整版本資訊清單: https://github.com/Azure/data-api-builder/releases/tag/v0.4.11-alpha

已更新區段的 data-source JSON 架構

data-source 態檔中的 區段會更新為在所有支援的資料庫之間保持一致,但仍允許每個資料庫都有自定義組態。 引進了新的區段 options ,將資料庫專屬的所有屬性分組。 例如:

{
  "$schema": "https://dataapibuilder.azureedge.net/schemas/v0.4.11-alpha/dab.draft.schema.json",
  "data-source": {
    "database-type": "cosmosdb_nosql",
    "options": {
      "database": "PlaygroundDB",
      "graphql-schema": "schema.gql"
    },
    "connection-string": "AccountEndpoint=https://localhost:8081/;AccountKey=REPLACEME;"
  }
}

區段中可用的 options 項目取決於所選擇的 database-type

支援在 Azure SQL 和 SQL Server 的文件內篩選巢狀物件

透過 Azure SQL 和 SQL Server,您可以使用架構中定義的物件或數位關聯性,讓您可以對巢狀物件執行篩選作業。

query {
  books(filter: { series: { name: { eq: "Foundation" } } }) {
    items {
      title
      year
      pages
    }
  }
}

改善預存程序支援

REST 和 GraphQL 中預存程式的完整支援。 現在支持參數為 100% 的預存程式。 請參閱 預存程式 檔,瞭解如何搭配預存程式使用數據 API 產生器。

為 Cosmos DB 重新命名的新 database-type

我們已使用 Cosmos DB 新增對 PostgreSQL API 的支援。 使用合併 data-source 區段時,屬性 database-type 表示資料庫的類型。 由於 Cosmos DB 支援多個 API,因此目前支援的資料庫類型為 cosmosdb_nosqlcosmosdb_postgresql

  "data-source": {
    "database-type": "cosmosdb_nosql",
    "options": {
      "database": "PlaygroundDB",
      "graphql-schema": "schema.gql"
    }
  }

重新命名的 CLI 屬性 cosmosdb_nosql

遵循上一節所述的組態變更,現在 CLI 屬性會據以重新命名為 cosmosdb_nosql-database Cosmos DB NoSQL API 的 和 cosmosdb_nosql-container

dab init --database-type "cosmosdb_nosql" --graphql-schema schema.gql --cosmosdb_nosql-database PlaygroundDB  --cosmosdb_nosql-container "books" --connection-string "AccountEndpoint=https://localhost:8081/;AccountKey=REPLACEME;" --host-mode "Development"

Postgres 現在支援受控識別

現在,用戶可以在組態中指定存取令牌,以使用受控識別進行驗證。 或者,現在使用者無法指定連接字串中的密碼,而運行時間會嘗試擷取預設的受控識別令牌。 如果失敗,則會在連接字串中嘗試沒有密碼的連接。

支援 Azure MySQL 的 Microsoft Entra ID 用戶驗證

已將使用者令牌新增為密碼字段,以使用 Microsoft Entra ID 外掛程式向 MySQL 進行驗證。

0.3.7 版的新功能

GitHub 上提供此版本的完整版本資訊清單: https://github.com/Azure/data-api-builder/releases/tag/v0.3.7-alpha

檢視支援

REST 和 GraphQL 現在都支持檢視。 如果您有檢視,例如 dbo.vw_books_details 可以使用下列 dab 命令來公開檢視:

dab add BookDetail --source dbo.vw_books_details --source.type View --source.key-fields "id" --permissions "anonymous:read"

選項 source.key-fields 可用來指定檢視中的哪些欄位可用來唯一識別專案,以便也可以針對檢視實作依主鍵流覽。 開發人員必須負責設定 DAB 來啟用或停用動作 (,例如,視檢視是否可更新而定, create 動作) 。

預存程序支援

REST 要求現在支援預存程式。 如果您有預存程式,例如 dbo.stp_get_all_cowritten_books_by_author 可以使用下列 dab 命令來公開:

dab add GetCowrittenBooksByAuthor --source dbo.stp_get_all_cowritten_books_by_author --source.type "stored-procedure" --permissions "anonymous:read" --rest true

呼叫 REST 端點時,參數可以傳入 URL 查詢字串:

http://<dab-server>/api/GetCowrittenBooksByAuthor?author=isaac%20asimov

注意

開發人員必須負責設定 DAB 來啟用或停用動作 (,例如, create 呼叫預存程式時,動作) 允許或拒絕特定 HTTP 動詞命令。 例如,針對範例中使用的預存程式,假設其用途是傳回某些數據,則只允許 read 動作是合理的做法。

Microsoft Entra ID 驗證

Microsoft Entra ID 驗證現在已完全運作。 如需詳細資訊,請參閱 使用 Microsoft Entra ID 進行驗證

用於本機驗證的新模擬器驗證提供者

為了簡化在本機開發時已驗證要求的測試,可以使用新的 simulator 驗證提供者。 提供者 simulator 是可設定的驗證提供者,它會指示數據 API 產生器引擎將所有要求視為已驗證。 如需詳細資訊,請參閱: 本機驗證

支援篩選 Azure Cosmos DB 中檔內的巢狀物件

透過 Azure Cosmos DB,您可以使用架構中定義的物件或陣列關聯性,讓您可以對巢狀物件執行篩選作業。

query {
  books(first: 1, filter : { author : { profile : { twitter : {eq : ""@founder""}}}})
    id
    name
  }
}