数据 API 生成器使用 数据源文件支持混合终结点,允许在单独的配置文件中定义多个数据源及其实体。
此操作在以下情况下十分有用:
- 需要从多个数据库公开实体
- 你想要模块化地组织配置
- 需要独立管理不同的数据后端
Structure
若要定义多个数据源,请创建多个配置文件,并在顶级配置数组中 data-source-files
引用它们。
Top-level file
{
"data-source-files": [
"dab-config-sql.json",
"dab-config-cosmos.json"
],
"runtime": {
"rest": {
"enabled": true
}
}
}
子文件:dab-config-sql.json
{
"data-source": {
"database-type": "mssql",
"connection-string": "@env('SQL_CONNECTION_STRING')"
},
"entities": {
"Book": {
"source": {
"object": "dbo.Books"
},
"permissions": [
{ "role": "anonymous", "actions": [ "read" ] }
]
}
}
}
子文件:dab-config-cosmos.json
{
"data-source": {
"database-type": "cosmosdb_nosql",
"connection-string": "@env('COSMOS_CONNECTION_STRING')",
"database-name": "library"
},
"entities": {
"LoanRecord": {
"source": {
"object": "LoanRecords"
},
"permissions": [
{ "role": "anonymous", "actions": [ "read" ] }
]
}
}
}
Behavior
- 仅遵循顶级文件的
runtime
设置 - 每个子文件必须同时包含一个和
entities
一个data-source
节 - 实体名称在所有文件中必须全局唯一
- 在单独的文件中定义的实体不能通过关系相互引用
- 文件可以根据需要嵌套在子文件夹中
Benefits
- 清理每个后端的配置分离
- 启用可缩放的多数据库 API
- 简化复杂系统的维护
Limitations
- 配置文件之间没有关系
- 不允许循环文件引用
- 仅顶级文件控制运行时行为