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.
UYGULANANLAR: Tüm API Management katmanları
GraphQL şemasında belirtilen nesne türündeki bir GraphQL alanının verilerini alacak veya ayarlayan bir çözümleyici yapılandırın. Şema, GRAPHQL API'si olarak API Management'a aktarılmalıdır.
API Management şu anda aşağıdaki veri kaynaklarına erişebilen çözümleyicileri destekler:
- HTTP tabanlı veri kaynağı (REST veya SOAP API)
- Cosmos DB veritabanı
- Azure SQL veritabanı
Bilinmesi gerekenler
- Çözümleyici, yalnızca şemadaki nesne türü ve alan eşleştiğinde çalıştırılan bir ilke tanımı içeren bir kaynaktır.
- Her çözümleyici tek bir alan için verileri çözümler. Birden çok alanın verilerini çözümlemek için her bir alan için ayrı bir çözümleyici yapılandırın.
- Çözümleyici kapsamlı ilkeler, ilke yürütme işlem hattındaki ve
inboundilkelerdenbackenddeğerlendirilir. İlkeleri diğer kapsamlardan devralmıyorlar. Daha fazla bilgi için bkz. Azure API Management'ta ilkeler. - GraphQL API'si için, çözümleyiciye özgü ilkelerden bağımsız olarak API'ye özgü ilkeleri yapılandırabilirsiniz. Örneğin, çözümleyici çağrılmadan önce isteği doğrulamak için kapsama bir
inboundilkesi ekleyin. API'nin API ilkeleri sekmesinde API'ye özgü ilkeleri yapılandırın. - GraphQL çözümleyicilerinde arabirim ve birleştirme türlerini desteklemek için, arka uç yanıtı ya
__typenamealanını zaten içermelidir ya da set-body ilkesi kullanılarak__typenameeklenerek değiştirilmelidir.
Önkoşullar
- Mevcut bir API Management örneği. Henüz oluşturmadıysanız bir tane oluşturun.
- Geçişli veya yapay GraphQL API'lerini içeri aktarabilirsiniz.
Çözümleyici oluşturma
Aşağıdaki adımlar, HTTP tabanlı bir veri kaynağı kullanarak bir çözümleyici oluşturur. Genel adımlar, desteklenen bir veri kaynağı kullanan tüm çözümleyiciler için benzerdir.
Sol menüde API'ler'i ve ardından GraphQL API'nizin adını seçin.
Şema sekmesinde, çözümleyiciyi yapılandırmak istediğiniz nesne türündeki bir alanın şemasını gözden geçirin.
Bir alan seçin ve sol kenar boşluğunda işaretçiyi üzerine getirin.
+ Çözümleyici Ekle'yi seçin.
Çözümleyici Oluştur sayfasında:
- İsterseniz Name özelliğini güncelleştirin, isteğe bağlı olarak bir Açıklama girin ve Tür ve Alan seçimlerini onaylayın veya güncelleştirin.
- Çözümleyicinin Veri kaynağını seçin. Bu örnekte HTTP API'sini seçin.
Çözümleyici ilke düzenleyicisinde ilkeyi
http-data-sourcesenaryonuz için alt öğelerle güncelleştirin.GraphQL işlemini bir HTTP isteğine dönüştürmek için gerekli
http-requestöğeyi ilkelerle güncelleştirin.İsteğe bağlı olarak bir
http-responseöğesi ve alt ilkeler ekleyerek çözücünün HTTP yanıtını dönüştürün.http-responseöğesi belirtilmezse, yanıt ham dize olarak döndürülür.Oluştur'u belirleyin.
Çözümleyici alana eklenir ve Çözümleyiciler sekmesinde görüntülenir.
Çözümleyicileri yönetme
GraphQL API'sinin çözümleyicilerini API'nin Çözümleyiciler sekmesinde listeleyebilir ve yönetebilirsiniz.
Çözümleyiciler sekmesinde:
Bağlı sütunu çözümleyicinin şu anda GraphQL şemasında bulunan bir alan için yapılandırılıp yapılandırılmadığını gösterir. Çözümleyici bağlı değilse çağrılamıyor.
Çözümleyicinin bağlam menüsünde (...) Çözümleyiciyi Kopyalama, Düzenleme veya Silme komutlarını bulun. Farklı bir tür ve alanı hedefleyen benzer bir çözümleyiciyi hızla oluşturmak için listelenen bir çözümleyiciyi kopyalama.
+ Oluştur'u seçerek yeni bir çözümleyici oluşturabilirsiniz.
Çözümleyiciyi düzenleme ve test edin
Tek bir çözümleyiciyi düzenlediğinizde Çözümleyiciyi düzenle sayfası açılır. Şunları yapabilirsiniz:
Çözümleyici ilkesini ve isteğe bağlı olarak veri kaynağını güncelleştirin. Veri kaynağının değiştirilmesi geçerli çözümleyici ilkesini geçersiz kılar.
Çözümleyicinin hedeflediğini türü ve alanı değiştirin.
Çözümleyicinin konfigürasyonunu test edin ve hata ayıklayın. Çözümleyici ilkesini düzenlerken, şemada doğrulayabileceğiniz veri kaynağı çıkışını denetlemek için Testi Çalıştır'ı seçin. Hatalar oluşursa, yanıt sorun giderme bilgilerini içerir.
GraphQL bağlamı
- Çözümleyicinin isteği ve yanıtının bağlamı (belirtilirse) özgün ağ geçidi API'sinin isteği bağlamından farklıdır:
-
context.GraphQLözellikleri, geçerli çözümleyici yürütmesi için bağımsız değişkenlere (Arguments) ve üst nesneye (Parent) ayarlanır. - İstek bağlamı, GraphQL sorgusunda gövde olarak geçirilen bağımsız değişkenleri içerir.
- Yanıt bağlamı, ağ geçidi isteğinin tam yanıtının bağlamı değil çözümleyici tarafından yapılan bağımsız çağrının yanıtıdır.
contextİstek ve yanıt işlem hattı üzerinden geçirilen değişken, GraphQL çözümleyicisi ile kullanıldığında GraphQL bağlamı ile genişletilir.
-
Bağlam. GraphQL.parent
Geçerli çözümleyici yürütmesi için context.GraphQL.parent, üst nesneye ayarlanmış durumda. Aşağıdaki kısmi şemayı göz önünde bulundurun:
type Comment {
id: ID!
owner: string!
content: string!
}
type Blog {
id: ID!
title: string!
content: string!
comments: [Comment]!
comment(id: ID!): Comment
}
type Query {
getBlog(): [Blog]!
getBlog(id: ID!): Blog
}
Ayrıca, belirli bir blog için tüm bilgiler için bir GraphQL sorgusu düşünün:
query {
getBlog(id: 1) {
title
content
comments {
id
owner
content
}
}
}
comments türündeki Blog alanı için bir çözümleyici ayarlarsanız, hangi blog kimliğini kullanmanız gerektiğini anlamanız gerekir. Aşağıdaki çözümleyicide gösterildiği gibi kullanarak context.GraphQL.Parent["id"] blog kimliğini alabilirsiniz:
<http-data-source>
<http-request>
<set-method>GET</set-method>
<set-url>@($"https://data.contoso.com/api/blog/{context.GraphQL.Parent["id"]}")
</set-url>
</http-request>
</http-data-source>
Bağlam: GraphQL.Arguments
Parametreli GraphQL sorgusunun bağımsız değişkenleri context.GraphQL.Arguments öğesine eklenir. Örneğin, aşağıdaki iki sorguyu göz önünde bulundurun:
query($id: Int) {
getComment(id: $id) {
content
}
}
query {
getComment(id: 2) {
content
}
}
Çözümleyiciyi çağırmanın iki yolu bu sorgulardır. GraphQL aşağıdaki JSON yükünü gönderir:
{
"query": "query($id: Int) { getComment(id: $id) { content } }",
"variables": { "id": 2 }
}
{
"query": "query { getComment(id: 2) { content } }"
}
Çözümleyiciyi aşağıdaki gibi tanımlayabilirsiniz:
<http-data-source>
<http-request>
<set-method>GET</set-method>
<set-url>@($"https://data.contoso.com/api/comment/{context.GraphQL.Arguments["id"]}")</set-url>
</http-request>
</http-data-source>
İlgili içerik
Daha fazla çözümleyici örneği için bkz: