Azure API Management'ta GraphQL API'lerine genel bakış
UYGULANANLAR: Tüm API Management katmanları
GraphQL API'lerini yönetmek için API Management'ı kullanabilirsiniz - GraphQL sorgu diline göre API'ler. GraphQL, bir API'deki verilerin eksiksiz ve anlaşılır bir açıklamasını sağlayarak istemcilere tam olarak ihtiyaç duydukları verileri verimli bir şekilde alma gücü sağlar. GraphQL hakkında daha fazla bilgi edinin
API Management, GraphQL API'lerini içeri aktarmanıza, yönetmenize, korumanıza, test edip yayımlamanıza ve izlemenize yardımcı olur. İki API modelinden birini seçebilirsiniz:
Geçiş GraphQL'si | Sentetik GraphQL |
---|---|
▪️ Mevcut GraphQL hizmet uç noktasına geçiş API'si ▪️ GraphQL sorguları, mutasyonlar ve abonelikler için destek |
▪️ Özel GraphQL şemasını temel alan API ▪️ GraphQL sorguları, mutasyonlar ve abonelikler için destek ▪️ Http veri kaynakları gibi özel çözümleyicileri yapılandırma ▪️ Eski API'lerden veri kullanırken GraphQL şemaları ve GraphQL tabanlı istemciler geliştirme |
Kullanılabilirlik
- GraphQL API'leri tüm API Management hizmet katmanlarında desteklenir
- Yapay GraphQL API'leri şu anda API Management çalışma alanlarında desteklenmemektedir
- Yapay GraphQL API'lerindeki GraphQL abonelikleri desteği şu anda önizleme aşamasındadır ve Tüketim katmanında kullanılamaz
GraphQL nedir?
GraphQL, API'ler için açık kaynak, endüstri standardı bir sorgu dilidir. Kaynaklar üzerinde eylemler etrafında tasarlanan REST stili API'lerin aksine GraphQL API'leri daha geniş bir kullanım örnekleri kümesini destekler ve veri türlerine, şemalara ve sorgulara odaklanır.
GraphQL belirtimi REST API'lerini kullanan istemci web uygulamaları tarafından karşılaşılan yaygın sorunları açıkça çözer:
- Tek bir sayfanın veri gereksinimlerini karşılamak için çok sayıda istek gerektirebilir
- REST API'leri genellikle işlenen sayfanın gerektirdiğinden daha fazla veri döndürür
- yeni bilgi almak için istemci uygulamasının yoklaması gerekiyor
Bir GraphQL API'sini kullanarak istemci uygulaması, bir GraphQL hizmetine tek bir istek olarak gönderilen bir sorgu belgesinde sayfayı işlemek için ihtiyaç duyduğu verileri belirtebilir. İstemci uygulaması, GraphQL hizmetinden gerçek zamanlı olarak gönderilen veri güncelleştirmelerine de abone olabilir.
Şema ve türler
API Management'ta, bir GraphQL şemasından arka uç GraphQL API uç noktasından alınan veya sizin tarafınızdan karşıya yüklenen bir GraphQL API'si ekleyin. GraphQL şemasında şu ifadeler açıklanmaktadır:
- İstemcilerin GraphQL API'sinden isteyebileceği veri nesnesi türleri ve alanları
- Sorgular gibi verilerde izin verilen işlem türleri
- Birleşimler ve arabirimler gibi veriler üzerinde ek esneklik ve denetim sağlayan diğer türler
Örneğin, kullanıcı verileri için temel bir GraphQL şeması ve tüm kullanıcılara yönelik bir sorgu aşağıdaki gibi görünebilir:
type Query {
users: [User]
}
type User {
id: String!
name: String!
}
İşlem türleri
API Management, GraphQL şemalarında aşağıdaki işlem türlerini destekler. Bu işlem türleri hakkında daha fazla bilgi için bkz . GraphQL belirtimi.
Sorgu - REST'teki bir işleme benzer şekilde
GET
verileri getirirMutasyon - REST'teki veya
PUT
PATCH
işlemine benzer şekilde sunucu tarafı verilerini değiştirirAbonelik - GraphQL hizmetindeki verilerde yapılan değişiklikler hakkında abone olan istemcileri gerçek zamanlı olarak bilgilendirmeyi sağlar
Örneğin, veriler GraphQL mutasyonuyla değiştirildiğinde, abone olunan istemcilere değişiklik hakkında otomatik olarak bildirim gönderilebilir.
Önemli
API Management, graphql-ws WebSocket protokolü kullanılarak uygulanan abonelikleri destekler. Sorgular ve mutasyonlar WebSocket üzerinden desteklenmez.
Diğer türler
API Management, GraphQL şemalarındaki birleşim ve arabirim türlerini destekler.
Çözümleyiciler
Çözümleyiciler , GraphQL şemasını arka uç verilerine eşler ve bir nesne türündeki her alan için veri üretir. Veri kaynağı bir API, veritabanı veya başka bir hizmet olabilir. Örneğin, bir çözümleyici işlevi önceki örnekteki sorgu için users
veri döndürmekten sorumlu olacaktır.
API Management'ta, nesne türündeki bir alanı arka uç veri kaynağına eşlemek için bir çözümleyici oluşturabilirsiniz. Yapay GraphQL API şemalarındaki alanlar için çözümleyicileri yapılandırabilirsiniz, ancak bunları doğrudan GraphQL API'leri tarafından kullanılan varsayılan alan çözümleyicilerini geçersiz kacak şekilde de yapılandırabilirsiniz.
API Management şu anda BIR GraphQL şemasındaki alanların verilerini döndürmek için HTTP API, Cosmos DB ve Azure SQL veri kaynaklarını temel alan çözümleyicileri desteklemektedir. Her çözümleyici, veri kaynağına bağlanmak ve verileri almak için uyarlanmış bir ilke kullanılarak yapılandırılır:
Data source | Çözümleyici ilkesi |
---|---|
HTTP tabanlı veri kaynağı (REST veya SOAP API) | http-data-source |
Cosmos DB veritabanı | cosmosdb-data-source |
Azure SQL veritabanı | sql-data-source |
Örneğin, önceki users
sorgu için HTTP API tabanlı çözümleyici arka uç REST API'sindeki bir GET
işlemle eşlenebilir:
<http-data-source>
<http-request>
<set-method>GET</set-method>
<set-url>https://myapi.contoso.com/api/users</set-url>
</http-request>
</http-data-source>
Çözümleyici ayarlama hakkında daha fazla bilgi için bkz . GraphQL çözümleyicisini yapılandırma.
GraphQL API'lerini yönetme
- GraphQL'e özgü saldırıların güvenliğini sağlamak ve bu saldırılara karşı koruma sağlamak için hem mevcut erişim denetimi ilkelerini hem de GraphQL doğrulama ilkesini uygulayarak GraphQL API'lerinin güvenliğini sağlayın.
- GraphQL şemasını keşfedin ve Azure ve geliştirici portallarındaki GraphQL API'lerine karşı test sorguları çalıştırın.