Veri API'si oluşturucusunda genişletilmiş veritabanı nesneleri
Veri API oluşturucusu, veritabanı tablolarına veya kapsayıcılarına eşlemeye alternatif olarak görünümler ve saklı yordamlar için destek içerir. Bu ayrı veritabanı nesnelerinin REST veya GraphQL uç noktalarına sorunsuz bir şekilde eşlenmesi için özel yapılandırma gerekir. Veri API oluşturucusu'nu görünümler ve saklı yordamlarla kullanmak için bazı özel yapılandırmalar gereklidir.
Bu makale, Veri API'sini oluşturucusu ile hem görünümleri hem de saklı yordamları kullanma işleminin dökümünü içerir.
Görünümler
Görünümler, bir tablonun Veri API'sini oluşturucuda nasıl kullanabildiğine benzer şekilde kullanılabilir. Görünüm kullanımı, varlığın kaynak türü view
olarak belirtilerek tanımlanmalıdır. Veri API'sinin gerekirse tek bir öğeyi nasıl tanımlayıp döndürebileceğini bilmesi için key-fields
özelliği de sağlanmalıdır.
Bir görünümünüz varsa, örneğin dbo.vw_books_details
aşağıdaki dab
komutu kullanılarak gösterilebilir:
dab add BookDetail --source dbo.vw_books_details --source.type View --source.key-fields "id" --permissions "anonymous:read"
Not
--source.key-fields
, CLI aracılığıyla yapılandırma oluşturulurken görünümler için zorunludur.
dab-config.json
dosyası aşağıdaki örnekteki gibi olacaktır:
"BookDetail": {
"source": {
"type": "view",
"object": "dbo.vw_books_details",
"key-fields": [ "id" ]
},
"permissions": [{
"role": "anonymous",
"actions": [ "read" ]
}]
}
Not
görünümün güncelleştirilebilir olması veyaolmaması için izni uygun şekilde yapılandırmanız gerektiğini unutmayın. Görünüm güncelleştirilebilir değilse, varlığa yalnızca bu görünümü temel alan okuma erişimine izin vermelisiniz.
Görünümler için REST desteği
REST perspektifinden bakıldığında görünüm, tablo gibi davranır. Tüm REST işlemleri desteklenir.
Görünümler için GraphQL desteği
GraphQL perspektifinden bir görünüm tablo gibi davranır. Tüm GraphQL işlemleri desteklenir.
Saklı yordamlar
Saklı yordamlar, Veri API'sini oluşturucusu tarafından kullanıma sunulan varlıklarla ilgili nesneler olarak kullanılabilir. Saklı Yordam kullanımı, varlığın kaynak türünün stored-procedure
belirterek tanımlanmalıdır.
Not
Veri API oluşturucusu ilişkisel veritabanları (MSSQL) için saklı yordamları destekler, ancak ilişkisel olmayan veritabanları için (örneğin NoSQL) desteklenmez.
Saklı yordamınız varsa, örneğin dbo.stp_get_all_cowritten_books_by_author
aşağıdaki dab
komutu kullanılarak gösterilebilir:
dab add GetCowrittenBooksByAuthor --source dbo.stp_get_all_cowritten_books_by_author --source.type "stored-procedure" --source.params "searchType:s" --permissions "anonymous:execute" --rest.methods "get" --graphql.operation "query"
dab-config.json
dosyası aşağıdaki örnekteki gibi olacaktır:
"GetCowrittenBooksByAuthor": {
"source": {
"type": "stored-procedure",
"object": "dbo.stp_get_all_cowritten_books_by_author",
"parameters": {
"searchType": "s"
}
},
"rest": {
"methods": [ "GET" ]
},
"graphql": {
"operation": "query"
},
"permissions": [{
"role": "anonymous",
"actions": [ "execute" ]
}]
}
parameters
hangi parametrelerin kullanıma sunulması gerektiğini tanımlar ve http isteğinde bu parametreler sağlanmazsa saklı yordam parametrelerine geçirilecek varsayılan değerleri de sağlar.
Sınırlama
- Veri API oluşturucusu tarafından yalnızca saklı yordam tarafından döndürülen ilk sonuç kümesi kullanılır.
- Yalnızca
sys.dm_exec_describe_first_result_set
tarafından açıklanan ilk sonuç kümesi için meta verileri desteklenen saklı yordamlar. - Hem REST hem de GraphQL uç noktaları için: Hem yapılandırma dosyasında hem de URL sorgu dizesinde saklı yordam parametresi belirtildiğinde, URL sorgu dizesindeki parametre öncelikli olur.
- Saklı yordam tarafından desteklenen varlıklar, tablolar, koleksiyonlar veya görünümler tarafından desteklenen varlıklar için otomatik olarak sağlanan tüm özelliklere sahip değildir.
- Saklı yordam destekli varlıklar sayfalandırmayı, sıralamayı veya filtrelemeyi desteklemez. Bu tür varlıklar, birincil anahtar değerleri tarafından belirtilen öğeleri döndürmeyi desteklemez.
- Alan/parametre düzeyi yetkilendirme kuralları desteklenmez.
Saklı yordamlar için REST desteği
Saklı yordam destekli varlık için REST uç nokta davranışı, bir veya birden çok HTTP fiilini (GET, POST, PUT, PATCH, DELETE) destekleyecek şekilde yapılandırılabilir. Varlığın REST bölümü aşağıdaki örnekteki gibi olacaktır:
"rest": {
"methods": [ "GET", "POST" ]
}
Yapılandırmada listelenmeyen bir HTTP yöntemi kullanıldığında varlık için rest istekleri HTTP 405 Yöntemine İzin Verilmeyen başarısız olur. Örneğin, PUT isteği yürütülürken hata kodu 405 ile başarısız olur.
"rest": false
yapılandırın ve saklı yordam varlığındaki REST istekleri HTTP 404 Bulunamadıile başarısız olur.
Saklı yordam parametreleri kabul ederse, GET
HTTP fiiliyle REST uç noktası çağrılırken PARAMETRELER URL sorgu dizesinde geçirilebilir. Örneğin:
GET http://<dab-server>/api/GetCowrittenBooksByAuthor?author=isaac%20asimov
POST, PUT, PATCH, DELETE gibi diğer HTTP fiilleri kullanılarak yürütülen saklı yordamlar, parametrelerin istek gövdesinde JSON olarak geçirilmesini gerektirir. Örneğin:
POST http://<dab-server>/api/GetCowrittenBooksByAuthor
{
"author": "isaac asimov"
}
Saklı yordamlar için GraphQL desteği
GraphQL'de saklı yordam yürütme, saklı yordam destekli varlığın graphql
seçeneği kullanılarak yapılandırılabilir. Varlığın işlemini açıkça ayarlamak, GraphQL şemasında saklı yordamı saklı yordamın davranışıyla uyumlu bir şekilde temsil etmenizi sağlar.
Not
GraphQL şemada bir Sorgu öğesinin olmasını gerektirir. Yalnızca saklı yordamları ortaya çıkarıyorsanız, en az birinin query
işlemini desteklediğinden emin olun, aksi takdirde The object type Query has to at least define one field in order to be valid.
gibi bir GraphQL hatası alırsınız
İşlem için herhangi bir değer ayarlanmaması, bir mutation
işleminin oluşturulmasına neden olur.
Örneğin, operation
seçeneği için query
değerinin kullanılması, saklı yordamın GraphQL şemasında sorgu alanı olarak çözümlenmesine neden olur.
CLI Kullanımı:
dab add GetCowrittenBooksByAuthor --source dbo.stp_get_all_cowritten_books_by_author --source.type "stored-procedure" --source.params "searchType:s" --permissions "anonymous:execute" --rest.methods "GET" --graphql.operation "query"
Çalışma Zamanı Yapılandırması:
"graphql": {
"operation": "query"
}
GraphQL Şema Bileşenleri: tür ve sorgu alanı:
type GetCowrittenBooksByAuthor {
id: Int!
title: String
}
Şemada, saklı yordamlar için hem sorgu hem de mutasyon işlemleri ön ek olarak execute
. Önceki saklı yordam için, oluşturulan tam sorgu adı alanı executeGetCowrittenBooksByAuthor
olacaktır. Oluşturulan GraphQL türü:
type Query {
executeGetCowrittenBooksByAuthor(
searchType: String = "S"
): [GetCowrittenBooksByAuthor!]!
}
Alternatif olarak, bir mutasyon alanının GraphQL şemasındaki saklı yordamı temsil edebilmesi için operation
mutation
olarak ayarlanabilir.
dab update
komutu, operation
değiştirmek için kullanılabilir:
dab update GetCowrittenBooksByAuthor --graphql.operation "mutation"
Çalışma zamanı yapılandırması:
"graphql": {
"operation": "mutation"
}
Oluşturulan GraphQL şeması:
type Mutation {
executeGetCowrittenBooksByAuthor(
searchType: String = "S"
): [GetCowrittenBooksByAuthor!]!
}
Saklı yordam parametreleri kabul ederse, bu parametreler sorgunun veya mutasyonun parametresi olarak geçirilebilir. Örneğin:
query {
executeGetCowrittenBooksByAuthor(author:"asimov")
{
id
title
pages
year
}
}
İlgili içerik
- Yapılandırma başvurusu
- CLI yükleme