Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Veri API oluşturucusu (DAB), bağlı bir veritabanından tablolara, görünümlere ve saklı yordamlara erişmenizi sağlayan bir RESTful web API'sini sağlar. Kullanıma sunulan her veritabanı nesnesi, çalışma zamanı yapılandırmasında bir varlık olarak tanımlanır.
VARSAYıLAN olarak DAB, REST uç noktalarını şu konumda barındırıyor:
https://{base_url}/api/{entity}
Uyarı
Tüm yol bileşenleri ve sorgu parametreleri büyük/küçük harfe duyarlıdır.
Veri API'si oluşturucusunda desteklenen anahtar sözcükler
| Konsept | REST | Amaç |
|---|---|---|
| Yansıtma | $select | Hangi alanların döndürüleceğini seçin |
| Filtering | $filter | Koşula bağlı olarak satırları kısıtlama |
| Sıralama | $orderby | Sıralama düzenini tanımlama |
| Sayfa Boyutu | $first | Sayfa başına öğeleri sınırlama |
| Devam | $after | Son sayfadan devam et |
Temel yapı
REST API'yi çağırmak için şu deseni kullanarak bir istek oluşturun:
{HTTP method} https://{base_url}/{rest-path}/{entity}
book varlığından tüm kayıtları okuma örneği:
GET https://localhost:5001/api/book
Yanıt, value dizisine sahip bir JSON nesnesidir. Sayfalandırma ve hata bilgileri yalnızca uygun olduğunda görünür.
Uyarı
Varsayılan olarak DAB, aksiruntime.pagination.default-page-size () yapılandırılmadığı sürece sorgu başına en fazla 100 öğe döndürür.
GET https://localhost:5001/api/book
Başarı:
{
"value": [
{ "id": 1, "title": "Dune", "year": 1965, "pages": 412 },
{ "id": 2, "title": "Foundation", "year": 1951, "pages": 255 }
]
}
Sayfalandırma ile başarı:
{
"value": [
{ "id": 1, "title": "Dune", "year": 1965, "pages": 412 },
{ "id": 2, "title": "Foundation", "year": 1951, "pages": 255 }
],
"nextLink": "https://localhost:5001/api/book?$after=WyJCb29rMiJd"
}
Boş sonuç (öğe bulunamadı):
{
"value": []
}
Uyarı
Var olmayan bir birincil anahtar için GET isteği, boş bir value dizisiyle 200 OK döndürür, 404 Not Found döndürmez. Öğenin var olup olmadığını belirlemek için boş bir dizi olup olmadığını denetleyin.
Sorgu türleri
Her REST varlığı hem koleksiyonu hem de tek kayıtlı okumaları destekler.
| Operation | Açıklama |
|---|---|
GET /api/{entity} |
Kayıtların listesini döndürür |
GET /api/{entity}/{primary-key-column}/{primary-key-value} |
Birincil anahtara göre bir kayıt döndürür |
Bir kayıt döndüren örnek:
GET /api/book/id/1010
Birçok değer döndüren örnek:
GET /api/book
Sonuçları filtreleme
Döndürülecek $filter kayıtları kısıtlamak için sorgu parametresini kullanın.
GET /api/book?$filter=title eq 'Foundation'
Bu sorgu, başlığı "Foundation" olan tüm kitapları döndürür.
Filtreler daha karmaşık sorgular için mantıksal işleçler içerebilir:
GET /api/book?$filter=year ge 1970 or title eq 'Dune'
Daha fazla bilgi için $filter değişken başvurusuna bakınız.
Sonuçları sıralama
parametresi kayıtların $orderby nasıl sıralanacağını tanımlar.
GET /api/book?$orderby=year desc, title asc
Bu, önce azalan düzende year ile ve ardından title ile sıralanmış kitapları geri döndürür.
Daha fazla bilgi için bkz. $orderby bağımsız değişken başvurusu.
Sonuçları sınırlandırma {#first-and-after}
$first parametresi, bir istekte kaç kaydın döndürülebileceğini sınırlar.
GET /api/book?$first=5
Bu, varsayılan olarak birincil anahtara göre sıralanmış ilk beş kitabı döndürür.
Varsayılan olarak 100 öğe olan yapılandırılan en büyük sayfa boyutunu istemek için de kullanabilirsiniz $first=-1 . Bu sınırı runtime.pagination.default-page-size ile yapılandırma dosyanızda yapılandırın.
Daha fazla bilgi için bkz. $first bağımsız değişken referansı.
Devam eden sonuçlar
Sonraki sayfayı getirmek için, önceki yanıttan devam belirteci kullanarak $after kullanın.
GET /api/book?$first=5&$after={continuation-token}
Belirteç, $after son sorgunun nerede sona erdiği tanımlar.
Daha fazla bilgi için $after argüman başvurusuna bakın.
Alan seçimi (projeksiyon)
Yanıta hangi alanların dahil olduğunu denetlemek için kullanın $select .
GET /api/book?$select=id,title,price
Bu yalnızca belirtilen sütunları döndürür.
Bir alan eksikse veya erişilebilir değilse, DAB döndürür 400 Bad Request.
Daha fazla bilgi için bkz. $select bağımsız değişken başvurusu.
Verileri değiştirme
REST API, varlık izinlerine bağlı olarak oluşturma, güncelleştirme ve silme işlemlerini de destekler.
| Yöntem | Eylem |
|---|---|
POST |
Yeni öğe oluşturma |
PUT |
Var olan bir öğeyi değiştirme (veya eksikse oluştur) |
PATCH |
Mevcut bir öğeyi güncelleştirme (veya eksikse oluşturma) |
DELETE |
Bir öğeyi birincil anahtara göre kaldırma |
Önemli
PUT ve PATCH öğelerinin upsert (eksikse ekle) davranışı yalnızca veritabanı açık birincil anahtar değerlerine izin verdiğinde çalışır. Otomatik olarak oluşturulan anahtarlar (örneğin, SQL Server'daki IDENTITY sütunları veya PostgreSQL'deki SERIAL) bulunan tablolar için, var olmayan bir anahtara PUT veya PATCH ekleme girişimi 404 Not Found döndürür çünkü veritabanı, otomatik oluşturulan bir sütuna açık eklemeleri reddeder. Otomatik olarak oluşturulan anahtarlara sahip tablolarda kayıt oluşturmak için kullanın POST veya DAB'nin anahtarı otomatik olarak atamasına izin vermek için anahtarsız PUT ve PATCH kullanın.
Yeni bir kayıt oluştur
Yeni öğe oluşturmak için kullanın POST .
POST https://localhost:5001/api/book
Content-Type: application/json
{
"id": 2000,
"title": "Leviathan Wakes",
"year": 2011,
"pages": 577
}
Var olan kaydı güncelleştir
Mevcut bir öğedeki belirli alanları güncelleştirmek için kullanın PATCH .
PATCH https://localhost:5001/api/book/id/2000
Content-Type: application/json
{
"id": 2000,
"title": "Leviathan Wakes",
"year": 2011,
"pages": 577
}
Kayıt silme
Bir öğeyi birincil anahtara göre kaldırmak için kullanın DELETE .
DELETE https://localhost:5001/api/book/id/2000
Alt dizinleri olan gelişmiş REST yolları
Uyarı
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.
Varlık REST yolları, alt dizin stili URL kesimleri oluşturmak için ileri eğik çizgiler içerebilir. Bu yapılandırma, API'niz için daha etkileyici, hiyerarşik URL yapılarını etkinleştirir.
Varlığın rest.path özelliğinde bir alt dizin yolu yapılandırın:
{
"entities": {
"ShoppingCartItem": {
"source": "dbo.ShoppingCartItem",
"rest": {
"path": "shopping-cart/item"
}
}
}
}
Bu yapılandırma uç noktaya neden olur:
GET /api/shopping-cart/item
DAB, yönlendirmede en uzun önek eşleştirmesini kullandığı için daha belirli yollar, daha kısa olanlardan önce eşleştirilir. Güvenlik için doğrulama, yol geçişi desenlerini (örneğin ..), ters eğik çizgileri ve yüzde kodlanmış ayırıcıları engeller.
Daha fazla bilgi için bkz. REST yolu yapılandırması.
Otomatik olarak oluşturulan birincil anahtarlar için anahtarsız PUT ve PATCH
Uyarı
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.
Bir varlığın tüm birincil anahtar sütunları otomatik olarak oluşturulduğunda (örneğin SQL Server'daki IDENTITY sütunları), URL'de birincil anahtar belirtmeden PUT ve PATCH istekleri gönderebilirsiniz. DAB, ekleme sırasında anahtarı otomatik olarak atar.
PUT /api/Book
Content-Type: application/json
{
"title": "My New Book",
"publisher_id": 1234
}
Bu istek, otomatik olarak oluşturulan birincil anahtarla yeni Book bir kayıt oluşturur.
Anahtarsız işlemler için kurallar
- Atlanmış tüm birincil anahtar sütunları otomatik olarak oluşturulmalıdır. Atlanmış anahtar sütunu otomatik olarak oluşturulmazsa istek başarısız olur.
- Bileşik birincil anahtarlar için yine de URL'de anahtarın otomatik olarak oluşturulmamış bölümlerini sağlamanız gerekir.
- Saklı yordamlar bu özellikten etkilenmez. Kendi parametre işlemelerini kullanmaya devam ederler.
- OpenAPI belgesi, temel varlık yolundaki anahtarsız işlemleri (örneğin,
PUT /api/Bookanahtar segmentleri olmadan) yansıtır.
HTTP yanıt sıkıştırması
Uyarı
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.
DAB, yük boyutlarını azaltmak ve aktarım hızlarını artırmak için HTTP yanıt sıkıştırmasını destekler. Yapılandırma dosyanızın runtime.compression bölümünde sıkıştırmayı yapılandırın.
{
"runtime": {
"compression": {
"level": "optimal"
}
}
}
Kullanılabilir sıkıştırma düzeyleri:
| Seviye | Açıklama |
|---|---|
optimal |
Sıkıştırma oranını ve hızını dengeler (çoğu senaryo için önerilir) |
fastest |
Sıkıştırma hızının oran üzerinden önceliğini belirler |
none |
Sıkıştırmayı devre dışı bırakır |
Sıkıştırmayı yapılandırma hakkında daha fazla bilgi için bkz. çalışma zamanı sıkıştırma yapılandırması.