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 getirir

  • Mutasyon - REST'teki veya PUT PATCH işlemine benzer şekilde sunucu tarafı verilerini değiştirir

  • Abonelik - 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.

Sonraki adımlar