Runtime

Çalışma zamanı davranışını belirleyen yapılandırma ayarları.

Sayfalandırma ayarları

Property Default Description
sayfa boyutu runtime.pagination.max Sayfa başına en fazla kaydı tanımlar
runtime.pagination.default-page-size Yanıt başına varsayılan kayıtları ayarlar

REST ayarları

Property Default Description
runtime.rest.path "/api" REST uç noktaları için temel yol
runtime.rest.enabled true Tüm varlıklar için REST isteklerinin etkinleştirilmesine veya devre dışı bırakılmasına izin verir
runtime.rest.request-body-strict true Doğru olduğunda istek gövdesindeki fazlalık alanlara izin verme

GraphQL ayarları

Property Default Description
runtime.graphql.allow-introspection true Temel alınan GraphQL şemasının sorgulanmasına izin verir
runtime.graphql.path "/graphql" GraphQL uç noktası için temel yol
runtime.graphql.enabled true Tüm varlıklar için GraphQL isteklerini etkinleştirmeye veya devre dışı bırakmaya izin verir
runtime.graphql.depth-limit null GraphQL sorgusunun izin verilen en fazla derinliği
runtime.graphql.multiple-mutations.create.enabled false Tüm varlıklar için birden çok mutasyon oluşturmasına izin verir

Konak ayarları

Property Default Description
runtime.host.max-response-size-mb 158 Tek bir sonuçta izin verilen en büyük veritabanı yanıtı boyutu (MB)
runtime.host.mode "production" Çalıştırma modu; "production" veya "development"

CORS ayarları

Property Default Description
runtime.host.cors.origins [] İzin verilen CORS kaynakları
runtime.host.cors.allow-credentials false Access-Control-Allow-Credentials üst bilgisi için değeri ayarlar

Kimlik doğrulama ayarları

Property Default Description
runtime.host.authentication.provider Unauthenticated Kimlik doğrulama sağlayıcısı
runtime.host.authentication.jwt.audience null JWT hedef kitlesi
runtime.host.authentication.jwt.issuer null JWT veren

Önbellek ayarları

Property Default Description
runtime.cache.enabled false Yanıtların genel olarak önbelleğe alınmasını sağlar
runtime.cache.ttl-seconds 5 Genel önbellek için yaşam süresi (saniye)
runtime.cache.level-2.enabled false Dağıtılmış düzey 2 önbelleğini genel olarak etkinleştirir
runtime.cache.level-2.provider "redis" Düzey 2 önbelleği için dağıtılmış önbellek sağlayıcısı
runtime.cache.level-2.connection-string null Düzey 2 önbellek sağlayıcısı için bağlantı dizesi
runtime.cache.level-2.partition null Dağıtılmış önbellek alanını yalıtma için isteğe bağlı bölüm adı

Sıkıştırma ayarları

Property Default Description
runtime.compression.level optimal HTTP yanıt sıkıştırma düzeyi (optimal, fastestveya none)

Telemetri ayarları

Property Default Description
runtime.telemetry.application-insights.connection-string null Application Insights bağlantı dizesi
runtime.telemetry.application-insights.enabled true Application Insights telemetrisini etkinleştirir veya devre dışı bırakır
runtime.telemetry.open-telemetry.endpoint null OpenTelemetry toplayıcı URL'si
runtime.telemetry.open-telemetry.headers {} OpenTelemetry dışarı aktarma üst bilgileri
runtime.telemetry.open-telemetry.service-name "dab" OpenTelemetry hizmet adı
runtime.telemetry.open-telemetry.exporter-protocol "grpc" OpenTelemetry protokolü ("grpc" veya "httpprotobuf")
runtime.telemetry.open-telemetry.enabled true OpenTelemetry'yi etkinleştirir veya devre dışı bırakır
runtime.telemetry.open-telemetry.enabled true OpenTelemetry'yi etkinleştirir veya devre dışı bırakır
runtime.telemetry.azure-log-analytics.enabled false Azure Log Analytics'i etkinleştirir veya devre dışı bırakır
runtime.telemetry.azure-log-analytics.dab-identifier "DabLogs" Azure Log Analytics'te DAB tanımlayıcısı
runtime.telemetry.azure-log-analytics.flush-interval-seconds 5 Günlük toplu gönderimleri arasındaki aralık (saniye)
runtime.telemetry.azure-log-analytics.auth.custom-table-name null Azure Log Analytics için özel tablo adı
runtime.telemetry.azure-log-analytics.auth.dcr-immutable-id null Veri toplama kuralı sabit kimliği
runtime.telemetry.azure-log-analytics.auth.dce-endpoint null Veri toplama uç noktası URL'si
runtime.telemetry.file.enabled false Dosya havuzu günlüğünü etkinleştirir veya devre dışı bırakır
runtime.telemetry.file.path "/logs/dab-log.txt" Telemetri günlükleri için dosya yolu
runtime.telemetry.file.rolling-interval "Day" Günlük dosyaları için sıralı aralık
runtime.telemetry.file.retained-file-count-limit 1 En fazla korunan günlük dosyası sayısı
runtime.telemetry.file.file-size-limit-bytes 1048576 Sarmalamadan önce bayt cinsinden en büyük dosya boyutu
runtime.telemetry.log-level.namespace null Ad alanına özgü günlük düzeyi geçersiz kılma
runtime.health.enabled true Genel olarak sistem durumu denetimi uç noktasını etkinleştirir veya devre dışı bırakır
runtime.health.roles null Kapsamlı sistem durumu uç noktası için izin verilen roller
runtime.health.cache-ttl-seconds 5 Sistem durumu denetimi raporu önbellek girdisi için yaşam süresi (saniye)
runtime.health.max-query-parallelism 4 En fazla eşzamanlı sistem durumu denetimi sorgusu (aralık: 1-8)

MCP ayarları

Property Default Description
runtime.mcp.enabled true MCP uç noktasını genel olarak etkinleştirir veya devre dışı bırakır
runtime.mcp.path "/mcp" MCP uç noktası için temel yol
runtime.mcp.description null Başlatma sırasında MCP istemcilerine gönderilen sunucu açıklaması
runtime.mcp.dml-tools true Tüm DML araçlarını veya araç başına denetim için bir nesneyi etkinleştirir veya devre dışı bırakır
runtime.mcp.dml-tools.describe-entities true describe_entities aracını etkinleştirir
runtime.mcp.dml-tools.create-record true create_record aracını etkinleştirir
runtime.mcp.dml-tools.read-records true read_records aracını etkinleştirir
runtime.mcp.dml-tools.update-record true update_record aracını etkinleştirir
runtime.mcp.dml-tools.delete-record true delete_record aracını etkinleştirir
runtime.mcp.dml-tools.execute-entity true execute_entity aracını etkinleştirir
runtime.mcp.dml-tools.aggregate-records true aggregate_records aracını (sorgu zaman aşımı ile boole veya nesne) etkinleştirir

Biçime genel bakış

{
  "runtime": {
    "pagination": {
      "max-page-size": <integer|null> (default: `100000`),
      "default-page-size": <integer|null> (default: `100`)
    },
    "rest": {
      "path": <string> (default: "/api"),
      "enabled": <true>|<false>,
      "request-body-strict": <true>|<false> (default: `true`)
    },
    "graphql": {
      "path": <string> (default: "/graphql"),
      "enabled": <true>|<false>,
      "allow-introspection": <true>|<false>,
      "depth-limit": <integer|null> (default: `null`),
      "multiple-mutations": {
        "create": {
          "enabled": <true>|<false> (default: `false`)
        }
      }
    },
    "host": {
      "mode": <"production"> (default) | <"development">,
      "max-response-size-mb": <integer|null> (default: `158`),
      "cors": {
        "origins": [ "<string>" ],
        "allow-credentials": <true>|<false> (default: `false`)
      },
      "authentication": {
        "provider": <string> (default: "Unauthenticated"),
        "jwt": {
          "audience": "<string>",
          "issuer": "<string>"
        }
      }
    }
  },
    "compression": {
      "level": <"optimal"> (default) | <"fastest"> | <"none">
    },
    "cache": {
      "enabled": <true>|<false> (default: `false`),
      "ttl-seconds": <integer> (default: `5`),
      "level-2": {
        "enabled": <true>|<false> (default: `false`),
        "provider": <"redis">,
        "connection-string": <string>,
        "partition": <string>
      }
    },
    "telemetry": {
      "application-insights": {
        "connection-string": "<string>",
        "enabled": <true>|<false> (default: `true`)
      },
      "open-telemetry": {
        "endpoint": "<string>",
        "headers": "<string>",
        "service-name": <string> (default: "dab"),
        "exporter-protocol": <"grpc"> (default) | <"httpprotobuf">,
        "enabled": <true>|<false> (default: `true`)
      },
      "azure-log-analytics": {
        "enabled": <true>|<false> (default: `false`),
        "dab-identifier": <string> (default: "DabLogs"),
        "flush-interval-seconds": <integer> (default: `5`),
        "auth": {
          "custom-table-name": <string>,
          "dcr-immutable-id": <string>,
          "dce-endpoint": <string>
        }
      },
      "file": {
        "enabled": <true>|<false> (default: `false`),
        "path": <string> (default: "/logs/dab-log.txt"),
        "rolling-interval": <string> (default: "Day"),
        "retained-file-count-limit": <integer> (default: `1`),
        "file-size-limit-bytes": <integer> (default: `1048576`)
      },
      "log-level": {
        // namespace keys
        "<namespace>": <"trace"|"debug"|"information"|"warning"|"error"|"critical"|"none"|null>
      }
    },
    "health": {
      "enabled": <true>|<false> (default: `true`),
      "roles": [ "<string>" ],
      "cache-ttl-seconds": <integer> (default: `5`),
      "max-query-parallelism": <integer> (default: `4`)
    },
    "mcp": {
      "enabled": <true>|<false> (default: `true`),
      "path": <string> (default: `"/mcp"`),
      "description": <string>,
      "dml-tools": <true>|<false> | {
        "describe-entities": <true>|<false> (default: `true`),
        "create-record": <true>|<false> (default: `true`),
        "read-records": <true>|<false> (default: `true`),
        "update-record": <true>|<false> (default: `true`),
        "delete-record": <true>|<false> (default: `true`),
        "execute-entity": <true>|<false> (default: `true`),
        "aggregate-records": <true>|<false> | {
          "enabled": <true>|<false> (default: `true`),
          "query-timeout": <integer> (default: `30`)
        }
      }
    }
  }
}

Mod (Konak çalışma zamanı)

Parent Property Type Required Default
runtime host sabit listesi (production | development) ❌ Hayır production

Geliştirme davranışı

  • GraphQL testi için Nitro (eski adıyla Banana Cake Pop) etkinleştirildi
  • REST testi için etkinleştirilmiş Swagger kullanıcı arabirimi
  • Anonim sistem durumu denetimleri etkinleştirildi
  • Artan günlük ayrıntı düzeyi (Hata Ayıklama)

Format

{
  "runtime": {
    "host": {
      "mode": "production" (default) | "development"
    }
  }
}

En büyük yanıt boyutu (Konak çalışma zamanı)

Parent Property Type Required Default
runtime.host max-response-size-mb integer ❌ Hayır 158

Herhangi bir sonuç için en büyük boyutu (megabayt cinsinden) ayarlar. Büyük yanıtlar sistemi zorlayabildiği için, max-response-size-mb özellikle metin veya JSON gibi büyük sütunlarda aşırı yüklemeyi önlemek için toplam boyutu (satır sayısı farklı) kaplar.

Value Result
ayarlanmadı Varsayılanı kullan
null Varsayılanı kullan
integer Herhangi bir pozitif 32 bit tamsayı
<= 0 Desteklenmiyor

Format

{
  "runtime": {
    "host": {
      "max-response-size-mb": <integer; default: 158>
    }
  }
}

GraphQL (çalışma zamanı)

Parent Property Type Required Default
runtime graphql object ❌ Hayır -

Genel GraphQL yapılandırması.

İç içe özellikler

Parent Property Type Required Default
runtime.graphql enabled boolean ❌ Hayır None
runtime.graphql path string ❌ Hayır "/graphql"
runtime.graphql depth-limit integer ❌ Hayır Hiçbiri (sınırsız)
runtime.graphql allow-introspection boolean ❌ Hayır True
runtime.graphql multiple-mutations.create.enabled boolean ❌ Hayır False

Özellik notları

  • Özellik için alt yollara path izin verilmez.
  • İç içe sorguları kısıtlamak için kullanın depth-limit .
  • allow-introspection GraphQL şemasını gizlemek için olarak ayarlayınfalse.
  • Tek bir mutasyona birden fazla varlık eklemek için kullanın multiple-mutations .

Format

{
  "runtime": {
    "graphql": {
      "enabled": <true> (default) | <false>
      "depth-limit": <integer|null> (default: `null`),
      "path": <string> (default: /graphql),
      "allow-introspection": <true> (default) | <false>,
      "multiple-mutations": {
        "create": {
          "enabled": <true> | <false> (default)
        }
      }
    }
  }
}

Örnek: birden çok mutasyon

Configuration

{
  "runtime": {
    "graphql": {
      "multiple-mutations": {
        "create": {
          "enabled": true
        }
      }
    }
  },
  "entities": {
    "User": {
      "source": "dbo.Users",
      "permissions": [
        {
          "role": "anonymous",
          "actions": ["create"] // entity permissions are required
        }
      ]
    }
  }
}

GraphQL mutasyonu

mutation {
  createUsers(input: [
    { name: "Alice", age: 30, isAdmin: true },
    { name: "Bob", age: 25, isAdmin: false },
    { name: "Charlie", age: 35, isAdmin: true }
  ]) {
    id
    name
    age
    isAdmin
  }
}

REST (çalışma zamanı)

Parent Property Type Required Default
runtime rest object ❌ Hayır -

Genel REST yapılandırması.

İç içe özellikler

Parent Property Type Required Default
runtime.rest enabled boolean ❌ Hayır None
runtime.rest path string ❌ Hayır "/api"
runtime.rest request-body-strict boolean ❌ Hayır True

Özellik notları

  • Genel enabled ise false, tek tek varlık düzeyi enabled önemli değildir.
  • path özelliği gibi /api/dataalt yol değerlerini desteklemez.
  • request-body-strict .NET POCO nesnelerini basitleştirmeye yardımcı olmak için tanıtıldı.
request-body-strict Behavior
true İstek gövdesindeki ek alanlar özel duruma BadRequest neden olur.
false İstek gövdesindeki ek alanlar yoksayılır.

Format

{
  "runtime": {
    "rest": {
      "enabled": <true> (default) | <false>,
      "path": <string> (default: /api),
      "request-body-strict": <true> (default) | <false>
    }
  }
}

Örnek: request-body-strict

  • Değeri olan default() sütunlar yalnızca yükündeki değerleri olduğunda yoksayılır INSERTnull. Sonuç olarak, INSERT olduğunda default()request-body-strictsütunlara yapılan true işlemler açık null değerlere neden olamaz. Bu davranışı gerçekleştirmek için bir UPDATE işlem gereklidir.
  • yük değeri ne olursa olsun sütun içeren default() sütunlar göz ardı edilir UPDATE .
  • Hesaplanan sütunlar her zaman yoksayılır.
  • Otomatik oluşturulan sütunlar her zaman yoksayılır.

Örnek tablo

CREATE TABLE Users (
    Id INT PRIMARY KEY IDENTITY, -- auto-generated column
    Name NVARCHAR(50) NOT NULL,
    Age INT DEFAULT 18, -- column with default
    IsAdmin BIT DEFAULT 0, -- column with default
    IsMinor AS IIF(Age <= 18, 1, 0) -- computed column
);

İstek veri yükü

{
  "Id": 999,
  "Name": "Alice",
  "Age": null,
  "IsAdmin": null,
  "IsMinor": false,
  "ExtraField": "ignored"
}

Ekleme davranışı request-body-strict = false

INSERT INTO Users (Name) VALUES ('Alice');
-- Default values for Age (18) and IsAdmin (0) are applied by the database.
-- IsMinor is ignored because it’s a computed column.
-- ExtraField is ignored.
-- The database generates the Id value.

Yanıt yükü

{
  "Id": 1,          // Auto-generated by the database
  "Name": "Alice",
  "Age": 18,        // Default applied
  "IsAdmin": false, // Default applied
  "IsMinor": true   // Computed
}

Güncelleştirme davranışı request-body-strict = false

UPDATE Users
SET Name = 'Alice Updated', Age = NULL
WHERE Id = 1;
-- IsMinor and ExtraField are ignored.

Yanıt yükü

{
  "Id": 1,
  "Name": "Alice Updated",
  "Age": null,
  "IsAdmin": false,
  "IsMinor": false // Recomputed by the database (false when age is `null`)
}

CORS (konak çalışma zamanı)

Parent Property Type Required Default
runtime.host cors object ❌ Hayır -

Genel CORS yapılandırması.

Tip

CORS, "Çıkış Noktaları Arası Kaynak Paylaşımı" anlamına gelir. Bu, web sayfalarının kendilerine hizmet verenden farklı bir etki alanına istek gönderip gönderemeyeceğini denetleyebilen bir tarayıcı güvenlik özelliğidir.

İç içe özellikler

Parent Property Type Required Default
runtime.host.cors allow-credentials boolean ❌ Hayır False
runtime.host.cors origins dize dizisi ❌ Hayır None

Note

allow-credentials özelliği CORS üst bilgisini ayarlarAccess-Control-Allow-Credentials.

Format

{
  "runtime": {
    "host": {
      "cors": {
        "allow-credentials": <true> | <false> (default),
        "origins": ["<array-of-strings>"]
      }
    }
  }
}

Note

Joker karakter * için originsbir değer olarak geçerlidir.

Sağlayıcı (Kimlik doğrulaması ana bilgisayar çalışma zamanı)

Parent Property Type Required Default
runtime.host.authentication provider sabit listesi (Unauthenticated | StaticWebApps | AppService | EntraId | Custom | Simulator) ❌ Hayır Unauthenticated

Kimlik doğrulama yöntemini seçer. Her sağlayıcı kimliği farklı şekilde doğrular. Adım adım kurulum için aşağıdaki tabloda yer alan nasıl yapılır kılavuzlarına bakın.

Note

Bu bölümde açıklanan Veri API oluşturucusu 2.0 işlevselliği şu anda önizleme aşamasındadır ve genel kullanılabilirlik öncesinde değişebilir. Daha fazla bilgi için bkz. Sürüm 2.0'daki yenilikler.

Sağlayıcı özeti

Provider Kullanım örneği Kimlik kaynağı Nasıl yapılır kılavuzu
Unauthenticated DAB, güvenilir bir ön ucun arkasında durur (varsayılan) Hiçbiri— tüm istekler farklı çalışır anonymous Kimliği Doğrulanmamış sağlayıcıyı yapılandırma
AppService Azure tarafından barındırılan uygulamalar (EasyAuth) X-MS-CLIENT-PRINCIPAL Üstbilgi App Service kimlik doğrulamayı yapılandırma
EntraID Microsoft Entra ID (Azure AD) JWT taşıyıcı belirteci Entra ID kimlik doğrulamasını yapılandırın
Custom Üçüncü taraf IdP'leri (Okta, Auth0) JWT taşıyıcı belirteci Özel JWT kimlik doğrulamayı yapılandırma
Simulator Yalnızca yerel test Simüle Edilmiş Simülatör kimlik doğrulamayı yapılandırma

Note

Sağlayıcı EntraId daha önce olarak adlandırılmıştı AzureAd. Eski ad uyumluluk için çalışmaya devam ediyor.

Kimliği doğrulanmamış (varsayılan)

Ayarlandığında Unauthenticated (veya sağlayıcı belirtilmediğinde), DAB herhangi bir JWT'i incelemez veya doğrulamaz. Tüm istekler rol olarak anonymous çalışır. Azure API Management veya uygulama ağ geçidi gibi bir ön uç hizmeti, istekler DAB'ye ulaşmadan önce kimlik doğrulaması veya erişim ilkesini işlemeye devam edebilir, ancak DAB yalnızca olarak anonymousyetkilendirmeye devam eder.

Important

Etkin olduğunda Unauthenticatedauthenticated ve varlık izinlerinde tanımlanan özel roller hiçbir zaman etkinleştirilmez. Yapılandırmanız bu rolleri içeriyorsa, DAB başlangıçta bir uyarı gösterir.

{
  "host": {
    "authentication": {
      "provider": "Unauthenticated"
    }
  }
}

AppService

Azure App Service EasyAuth tarafından eklenen kimlik üst bilgilerine güvenir.

{
  "host": {
    "authentication": {
      "provider": "AppService"
    }
  }
}

EntraID

Microsoft Entra Id tarafından verilen JWT belirteçlerini doğrular.

{
  "host": {
    "authentication": {
      "provider": "EntraId",
      "jwt": {
        "audience": "<application-id>",
        "issuer": "https://login.microsoftonline.com/<tenant-id>/v2.0"
      }
    }
  }
}

Özelleştirilmiş

Üçüncü taraf kimlik sağlayıcılarından JWT belirteçlerini doğrular.

{
  "host": {
    "authentication": {
      "provider": "Custom",
      "jwt": {
        "audience": "<api-audience>",
        "issuer": "https://<your-idp-domain>/"
      }
    }
  }
}

Simülatör

Yerel geliştirme ve test için kimlik doğrulamasını simüle eder.

{
  "host": {
    "authentication": {
      "provider": "Simulator"
    }
  }
}

Important

Sağlayıcı Simulator yalnızca olduğunda runtime.host.modedevelopmentçalışır. Simülatör üretim modunda yapılandırılırsa DAB başlatılamaz.

Rol seçimi

Simulator dışındaki tüm sağlayıcılar için üst bilgi, X-MS-API-ROLE kimliği doğrulanmış kullanıcının taleplerinden hangi rolün kullanılacağını seçer. Belirtilmezse, istek sistem rolünü kullanır Authenticated . Rol değerlendirmesi hakkında ayrıntılı bilgi için bkz . Yetkilendirmeye genel bakış.

JWT (Kimlik doğrulaması ana bilgisayar çalışma zamanı)

Parent Property Type Required Default
runtime.host.authentication jwt object ❌ Hayır -

Genel JSON Web Belirteci (JWT) yapılandırması.

Veri API'sinin oluşturucusunda JSON web belirteçleri diyagramı desteği.

İç içe özellikler

Parent Property Type Required Default
runtime.host.authentication.jwt audience string ✔️ Evet* None
runtime.host.authentication.jwt issuer string ✔️ Evet* None

* Nesne mevcut olduğunda audience hem hem de issuerjwt gereklidir. jwt Sağlayıcı EntraID, AzureADveya Customolduğunda nesnenin kendisi gereklidir.

Format

{
  "runtime": {
    "host": {
      "authentication": {
        "jwt": {
          "audience": "<client-id>",
          "issuer": "<issuer-url>"
        }
      }
    }
  }
}

Sayfalandırma (Çalışma Zamanı)

Parent Property Type Required Default
runtime pagination object ❌ Hayır -

REST ve GraphQL uç noktaları için genel sayfalandırma sınırları.

İç içe özellikler

Parent Property Type Required Default
runtime.pagination max-page-size int ❌ Hayır 100,000
runtime.pagination default-page-size int ❌ Hayır 100
runtime.pagination next-link-relative boolean ❌ Hayır false

Desteklenen en büyük sayfa boyutu değerleri

Value Result
integer Herhangi bir pozitif 32 bit tamsayı desteklenir.
0 Desteklenmiyor.
-1 Varsayılan olarak desteklenen en yüksek değerdir.
< -1 Desteklenmiyor.

Varsayılan sayfa boyutu desteklenen değerler

Value Result
integer Geçerli max-page-sizeküçük pozitif tamsayılar.
0 Desteklenmiyor.
-1 Varsayılan olarak geçerli max-page-size ayarını kullanır.
< -1 Desteklenmiyor.

olduğunda next-link-relativetrue, sayfalandırma nextLink değerleri mutlak URL'ler yerine göreli URL'ler kullanır.

Value Example
false (varsayılan) "nextLink": "https://localhost:5001/api/users?$after=..."
true "nextLink": "/api/users?$after=..."

Format

{
  "runtime": {
    "pagination": {
      "max-page-size": <integer; default: 100000>,
      "default-page-size": <integer; default: 100>,
      "next-link-relative": <boolean; default: false>
    }
  }
}

Note

Değer değerinden max-page-sizebüyük olduğunda sonuçlar konumunda max-page-sizeeşlenir.

Örnek: REST'te sayfalama

Request

GET https://localhost:5001/api/users

Yanıt yükü

{
  "value": [
    {
      "Id": 1,
      "Name": "Alice",
      "Age": 30,
      "IsAdmin": true,
      "IsMinor": false
    },
    {
      "Id": 2,
      "Name": "Bob",
      "Age": 17,
      "IsAdmin": false,
      "IsMinor": true
    }
  ],
  "nextLink": "https://localhost:5001/api/users?$after=W3siRW50aXR5TmFtZSI6InVzZXJzIiwiRmllbGROYW1lI=="
}

Sonraki Sayfayı İste

GET https://localhost:5001/api/users?$after=W3siRW50aXR5TmFtZSI6InVzZXJzIiwiRmllbGROYW1lI==

Örnek: GraphQL'de sayfalama

İstek yükü (Sorgu)

query {
  users {
    items {
      Id
      Name
      Age
      IsAdmin
      IsMinor
    }
    hasNextPage
    endCursor
  }
}

Yanıt yükü

{
  "data": {
    "users": {
      "items": [
        {
          "Id": 1,
          "Name": "Alice",
          "Age": 30,
          "IsAdmin": true,
          "IsMinor": false
        },
        {
          "Id": 2,
          "Name": "Bob",
          "Age": 17,
          "IsAdmin": false,
          "IsMinor": true
        }
      ],
      "hasNextPage": true,
      "endCursor": "W3siRW50aXR5TmFtZSI6InVzZXJzIiwiRmllbGROYW1lI=="
    }
  }
}

Sonraki Sayfayı İste

query {
  users(after: "W3siRW50aXR5TmFtZSI6InVzZXJzIiwiRmllbGROYW1lI==") {
    items {
      Id
      Name
      Age
      IsAdmin
      IsMinor
    }
    hasNextPage
    endCursor
  }
}

Örnek: İsteklerde Erişim max-page-size

max-page-size değerini (REST) veya $limit (GraphQL) firstolarak ayarlayarak -1 kullanın.

REST

GET https://localhost:5001/api/users?$limit=-1

GraphQL

query {
  users(first: -1) {
    items {
      ...
    }
  }
}

Sıkıştırma (çalışma zamanı)

Note

Bu bölümde açıklanan Veri API oluşturucusu 2.0 işlevselliği şu anda önizleme aşamasındadır ve genel kullanılabilirlik öncesinde değişebilir. Daha fazla bilgi için bkz. Sürüm 2.0'daki yenilikler.

Parent Property Type Required Default
runtime compression object ❌ Hayır -

HTTP yanıt sıkıştırma yapılandırması. Etkinleştirildiğinde DAB, yük boyutlarını azaltmak ve aktarım hızlarını artırmak için yanıt gövdelerini sıkıştırır.

İç içe özellikler

Parent Property Type Required Default
runtime.compression level string ❌ Hayır "optimal"

için desteklenen değerler level

Value Description Sıkıştırma tasarrufları Performans etkisi
optimal Bakiye oranı ve hızı (varsayılan) Gzip: 90.5% / Brotli: 92.2% Orta DÜZEYDE CPU kullanımı, hafif gecikme süresi artışı
fastest Oran üzerindeki hızı önceliklendirir Gzip: 89.8% / Brotli: 91.1% Düşük CPU kullanımı, en düşük gecikme süresi
none Sıkıştırma yok 0% (temel: 12.673 bayt) None

İstemci HTTP üst bilgileri

Sıkıştırma, istemcinin Accept-Encoding üst bilgisi tarafından çağrılır. Desteklenen algoritmalar Gzip ve Brotli'lerdir. ayarı, level hem istemci hem de sunucu birden çok algoritmayı desteklediğinde sıkıştırma stratejisini yapılandırıyor.

Desteklenen üst bilgiler

HTTP Üst Bilgisi Kullanılan Algoritma
Accept-Encoding: gzip Gzip
Accept-Encoding: br Brotli

Format

{
  "runtime": {
    "compression": {
      "level": <"optimal"> (default) | <"fastest"> | <"none">
    }
  }
}

Example

{
  "runtime": {
    "compression": {
      "level": "optimal"
    }
  }
}

Önbellek (çalışma zamanı)

Parent Property Type Required Default
runtime cache object ❌ Hayır -

Genel Önbellek yapılandırması.

İç içe özellikler

Parent Property Type Required Default
runtime.cache enabled boolean ❌ Hayır False
runtime.cache ttl-seconds integer ❌ Hayır 5
runtime.cache level-2 object ❌ Hayır -
Parent Property Type Required Default
runtime.cache.level-2 enabled boolean ❌ Hayır False
runtime.cache.level-2 provider string ❌ Hayır redis
runtime.cache.level-2 connection-string string ❌ Hayır None
runtime.cache.level-2 partition string ❌ Hayır None

Tip

Varlık düzeyi cache.ttl-seconds özelliği varsayılan olarak bu genel değeri kullanır.

Tip

Uçtan uca kurulum, önbellek düzeyi davranışı ve Redis örnekleri için bkz. Düzey 2 önbelleği uygulama.

Format

{
  "runtime": {
    "cache":  {
      "enabled": <boolean>,
      "ttl-seconds": <integer>,
      "level-2": {
        "enabled": <boolean>,
        "provider": "redis",
        "connection-string": <string>,
        "partition": <string>
      }
    }
  }
}

Important

Genel enabled ise false, tek tek varlık düzeyi enabled önemli değildir.

olduğunda level-2.enabledtrueDAB, yerel bellek içi önbelleğe ek olarak yapılandırılmış dağıtılmış önbellek sağlayıcısını kullanır. Önbellek düzeyiyle L1L2 yapılandırılmış bir varlık, veritabanına gitmeden önce yerel önbelleği, ardından dağıtılmış önbelleği denetler.

Telemetri (çalışma zamanı)

Parent Property Type Required Default
runtime telemetry object ❌ Hayır -

Genel telemetri yapılandırması.

İç içe özellikler

Parent Property Type Required Default
runtime.telemetry log-level dictionary ❌ Hayır None
runtime.telemetry application-insights object ❌ Hayır -
runtime.telemetry open-telemetry object ❌ Hayır -
runtime.telemetry azure-log-analytics object ❌ Hayır -
runtime.telemetry file object ❌ Hayır -

Ad alanı başına günlük ayrıntı düzeyini yapılandırıyor. Bu yapılandırma standart .NET günlüğe kaydetme kurallarına uyar ve Ayrıntılı denetime izin verir, ancak Veri API'si oluşturucu iç işlevleri hakkında biraz bilgi sahibi olduğunu varsayar. Veri API'si oluşturucusu açık kaynaktır: https://aka.ms/dab

Format

{
  "runtime": {
    "telemetry": {
      "log-level": {
        "namespace": "log-level",
        "namespace": "log-level"
      }
    }
  }
}

Tip

log-level hem geliştirme hem de üretimde çalışırken yeniden yüklenebilir. Şu anda üretimde çalışırken yeniden yüklemeyi destekleyen tek özelliktir.

Example

{
  "runtime": {
    "telemetry": {
      "log-level": {
        "Azure.DataApiBuilder.Core.Configurations.RuntimeConfigValidator": "debug",
        "Azure.DataApiBuilder.Core": "information",
        "default": "warning"
      }
    }
  }
}

Application Insights (telemetri)

Parent Property Type Required Default
runtime.telemetry application-insights object ❌ Hayır -

Application Insights'ta günlüğe kaydetmeyi yapılandırılır.

İç içe özellikler

Parent Property Type Required Default
runtime.telemetry.application-insights enabled boolean ❌ Hayır true
runtime.telemetry.application-insights connection-string string ✔️ Evet None

Format

{
  "runtime": {
    "telemetry": {
      "application-insights": {
        "enabled": <true; default: true> | <false>
        "connection-string": <string>
      }
    }
  }
}

OpenTelemetry (telemetri)

Parent Property Type Required Default
runtime.telemetry open-telemetry object ❌ Hayır -

Telemetriyi Aç için günlüğe kaydetmeyi yapılandırıyor.

İç içe özellikler

Parent Property Type Required Default
runtime.telemetry.open-telemetry enabled boolean ❌ Hayır true
runtime.telemetry.open-telemetry endpoint string ✔️ Evet None
runtime.telemetry.open-telemetry headers string ❌ Hayır None
runtime.telemetry.open-telemetry service-name string ❌ Hayır "dab"
runtime.telemetry.open-telemetry exporter-protocol sabit listesi (grpc | httpprotobuf) ❌ Hayır grpc

Birden çok üst bilgi , (virgül) birbirinden ayrılır.

Format

{
  "runtime": {
    "telemetry": {
      "open-telemetry": {
        "enabled": <true> (default) | <false>,
        "endpoint": <string>,
        "headers": <string>,
        "service-name": <string> (default: "dab"),
        "exporter-protocol": <"grpc" (default) | "httpprotobuf">
      }
    }
  }
}

Example

{
  "runtime": {
    "telemetry": {
      "open-telemetry": {
        "enabled": true,
        // a gRPC endpoint example
        "endpoint": "http://localhost:4317",
        // an HTTP/protobuf endpoint example
        "endpoint": "http://localhost:4318/v1/metrics",
        "headers": "api-key=key,other-config-value=value",
        "service-name": "dab",
      }
    }
  }
}

OTEL_EXPORTER_OTLP_HEADERS hakkında daha fazla bilgi edinin.

Note

gRPC (4317) daha hızlıdır ve akışı destekler ancak daha fazla kurulum adımı gerektirir. HTTP/protobuf (4318), hata ayıklaması daha basit ve daha kolay ancak daha az verimlidir.

Azure Log Analytics (telemetri)

Parent Property Type Required Default
runtime.telemetry azure-log-analytics object ❌ Hayır -

Veri toplama uç noktası aracılığıyla Azure Log Analytics'e günlük kaydı yapılandırılır. Etkinleştirildiğinde DAB, telemetri verilerini yapılandırılabilir bir aralıkta toplu olarak gönderir.

Note

Bu bölümde açıklanan Veri API oluşturucusu 2.0 işlevselliği şu anda önizleme aşamasındadır ve genel kullanılabilirlik öncesinde değişebilir. Daha fazla bilgi için bkz. Sürüm 2.0'daki yenilikler.

İç içe özellikler

Parent Property Type Required Default
runtime.telemetry.azure-log-analytics enabled boolean ❌ Hayır false
runtime.telemetry.azure-log-analytics dab-identifier string ❌ Hayır "DabLogs"
runtime.telemetry.azure-log-analytics flush-interval-seconds integer ❌ Hayır 5
runtime.telemetry.azure-log-analytics auth object ✔️ Evet* -

* auth olduğunda gereklidir enabledtrue.

Parent Property Type Required Default
runtime.telemetry.azure-log-analytics.auth custom-table-name string ✔️ Evet* null
runtime.telemetry.azure-log-analytics.auth dcr-immutable-id string ✔️ Evet* null
runtime.telemetry.azure-log-analytics.auth dce-endpoint string ✔️ Evet* null

* olduğunda enabledtruegereklidir.

  • dab-identifier—Veri API'si oluşturucusundan gelen günlükleri ayırt etmeye yardımcı olmak için Log Analytics'e geçirilen bir etiket.
  • flush-interval-seconds—telemetri verilerinin toplu gönderilmesi arasındaki zaman aralığı (saniye cinsinden).
  • custom-table-name—Verilerin depolandığı Azure Log Analytics'teki özel tablonun adı.
  • dcr-immutable-id—verilerin nasıl toplandığını tanımlayan veri toplama kuralının sabit kimliği.
  • dce-endpoint—telemetri verilerini göndermek için kullanılan veri toplama uç noktası URL'si.

Format

{
  "runtime": {
    "telemetry": {
      "azure-log-analytics": {
        "enabled": <true> | <false> (default),
        "dab-identifier": <string> (default: "DabLogs"),
        "flush-interval-seconds": <integer> (default: 5),
        "auth": {
          "custom-table-name": "<string>",
          "dcr-immutable-id": "<string>",
          "dce-endpoint": "<string>"
        }
      }
    }
  }
}

Example

{
  "runtime": {
    "telemetry": {
      "azure-log-analytics": {
        "enabled": true,
        "dab-identifier": "MyDabInstance",
        "flush-interval-seconds": 10,
        "auth": {
          "custom-table-name": "DabTelemetry_CL",
          "dcr-immutable-id": "dcr-abc123def456",
          "dce-endpoint": "https://my-dce.eastus-1.ingest.monitor.azure.com"
        }
      }
    }
  }
}

Dosya (telemetri)

Parent Property Type Required Default
runtime.telemetry file object ❌ Hayır -

Telemetri günlüklerinin yerel bir dosyaya yazıldığında yapılandırılır. Etkinleştirildiğinde, DAB yapılandırılmış günlük çıkışını yapılandırılabilir sıralı aralıklar ve boyut sınırlarıyla belirtilen dosya yoluna yazar.

Note

Bu bölümde açıklanan Veri API oluşturucusu 2.0 işlevselliği şu anda önizleme aşamasındadır ve genel kullanılabilirlik öncesinde değişebilir. Daha fazla bilgi için bkz. Sürüm 2.0'daki yenilikler.

İç içe özellikler

Parent Property Type Required Default
runtime.telemetry.file enabled boolean ❌ Hayır false
runtime.telemetry.file path string ✔️ Evet* "/logs/dab-log.txt"
runtime.telemetry.file rolling-interval enum ❌ Hayır "Day"
runtime.telemetry.file retained-file-count-limit integer ❌ Hayır 1
runtime.telemetry.file file-size-limit-bytes integer ❌ Hayır 1048576

* path olduğunda gereklidir enabledtrue.

Sıralı aralık değerleri

Value Description
Minute Dakikada bir yeni günlük dosyası
Hour Saatte bir yeni günlük dosyası
Day Her gün yeni günlük dosyası (varsayılan)
Month Her ay yeni günlük dosyası
Year Her yıl yeni günlük dosyası
Infinite Hiçbir zaman yeni bir dosyaya geçiş

Format

{
  "runtime": {
    "telemetry": {
      "file": {
        "enabled": <true> | <false> (default),
        "path": <string> (default: "/logs/dab-log.txt"),
        "rolling-interval": <"Day"> (default) | <"Minute"> | <"Hour"> | <"Month"> | <"Year"> | <"Infinite">,
        "retained-file-count-limit": <integer> (default: 1),
        "file-size-limit-bytes": <integer> (default: 1048576)
      }
    }
  }
}

Example

{
  "runtime": {
    "telemetry": {
      "file": {
        "enabled": true,
        "path": "/var/log/dab/dab-telemetry.txt",
        "rolling-interval": "Hour",
        "retained-file-count-limit": 24,
        "file-size-limit-bytes": 5242880
      }
    }
  }
}

MCP (çalışma zamanı)

Parent Property Type Required Default
runtime mcp object ❌ Hayır -

Veritabanı varlıklarını yapay zeka aracıları için MCP araçları olarak kullanıma sunan SQL Model Bağlam Protokolü (MCP) Sunucusunu yapılandırıyor.

Note

Bu bölümde açıklanan Veri API oluşturucusu 2.0 işlevselliği şu anda önizleme aşamasındadır ve genel kullanılabilirlik öncesinde değişebilir. Daha fazla bilgi için bkz. Sürüm 2.0'daki yenilikler.

İç içe özellikler

Parent Property Type Required Default
runtime.mcp enabled boolean ❌ Hayır true
runtime.mcp path string ❌ Hayır "/mcp"
runtime.mcp description string ❌ Hayır null
runtime.mcp dml-tools boole veya nesne ❌ Hayır true

özelliği, dml-tools tüm araçları etkinleştirmek veya devre dışı bırakmak için bir boole değeri veya tek tek araçları denetlemek için bir nesne kabul eder:

Parent Property Type Required Default
runtime.mcp.dml-tools describe-entities boolean ❌ Hayır true
runtime.mcp.dml-tools create-record boolean ❌ Hayır true
runtime.mcp.dml-tools read-records boolean ❌ Hayır true
runtime.mcp.dml-tools update-record boolean ❌ Hayır true
runtime.mcp.dml-tools delete-record boolean ❌ Hayır true
runtime.mcp.dml-tools execute-entity boolean ❌ Hayır true
runtime.mcp.dml-tools aggregate-records boole veya nesne ❌ Hayır true

Araç aggregate-records , boole değerini veya daha fazla ayara sahip bir nesneyi kabul eder:

Parent Property Type Required Default Menzil
runtime.mcp.dml-tools.aggregate-records enabled boolean ❌ Hayır true
runtime.mcp.dml-tools.aggregate-records query-timeout integer ❌ Hayır 30 1–600 saniye

Format

{
  "runtime": {
    "mcp": {
      "enabled": <true> (default) | <false>,
      "path": <string> (default: "/mcp"),
      "description": <string>,
      "dml-tools": {
        "describe-entities": <true> | <false>,
        "create-record": <true> | <false>,
        "read-records": <true> | <false>,
        "update-record": <true> | <false>,
        "delete-record": <true> | <false>,
        "execute-entity": <true> | <false>,
        "aggregate-records": {
          "enabled": <true> | <false>,
          "query-timeout": <integer; default: 30>
        }
      }
    }
  }
}

Example

{
  "runtime": {
    "mcp": {
      "enabled": true,
      "dml-tools": {
        "describe-entities": true,
        "create-record": true,
        "read-records": true,
        "update-record": true,
        "delete-record": true,
        "execute-entity": true,
        "aggregate-records": {
          "enabled": true,
          "query-timeout": 30
        }
      }
    }
  }
}

Tüm DML araçlarını aynı anda etkinleştirmek veya devre dışı bırakmak için veya "dml-tools"olarak true ayarlayınfalse.

Bir aracı çalışma zamanı düzeyinde devre dışı bırakırsanız, araç HIÇBIR zaman MCP tools/list yanıtında görünmez ve varlık düzeyi izinlerinden bağımsız olarak çağrılamıyor. Tek tek DML araçları hakkında daha fazla bilgi için bkz. Veri işleme dili (DML) araçları.

CLI'yi kullanma

dab configure --runtime.mcp.enabled true
dab configure --runtime.mcp.path "/mcp"
dab configure --runtime.mcp.dml-tools.describe-entities true
dab configure --runtime.mcp.dml-tools.create-record true
dab configure --runtime.mcp.dml-tools.read-records true
dab configure --runtime.mcp.dml-tools.update-record true
dab configure --runtime.mcp.dml-tools.delete-record true
dab configure --runtime.mcp.dml-tools.execute-entity true
dab configure --runtime.mcp.dml-tools.aggregate-records.enabled true

Sistem durumu (çalışma zamanı)

Parent Property Type Required Default
runtime health object ❌ Hayır -

Genel sistem durumu denetimi uç noktası (/health) yapılandırması.

İç içe özellikler

Parent Property Type Required Default Aralık/Notlar
runtime.health enabled boolean ❌ Hayır true
runtime.health roles dize dizisi ✔️ Evet* null *Üretim modunda gereklidir
runtime.health cache-ttl-seconds integer ❌ Hayır 5 Min: 0
runtime.health max-query-parallelism integer ❌ Hayır 4 Min: One, Max: Eight (kelepçeli)

Geliştirme ve üretim davranışı

Condition Geliştirme Davranışı Üretim Davranışı
health.enabled = yanlış 403 durum 403 durum
health.enabled = doğru Role bağlıdır Role bağlıdır
roles atlanmış veya null Sistem durumu görüntüleniyor 403 durum
geçerli rol içinde değil roles 403 durum 403 durum
içindeki geçerli rol roles Sistem durumu görüntüleniyor Sistem durumu görüntüleniyor
roles Içerir anonymous Sistem durumu görüntüleniyor Sistem durumu görüntüleniyor

Format

{
  "health": {
    "enabled": <true> (default) | <false>,
    "roles": [ <string> ], // required in production
    "cache-ttl-seconds": <integer; default: 5>,
    "max-query-parallelism": <integer; default: 4>
  }
}

Note

Genel enabled ise false, tek tek varlık düzeyi enabled önemli değildir.

Example

{
  "health": {
    "enabled": true,
    "roles": ["admin", "support"],
    "cache-ttl-seconds": 10,
    "max-query-parallelism": 6
  }
}