Aracılığıyla paylaş


GraphQL için Doku API'sinde birden çok veri kaynağını sorgulama

GraphQL için Doku API'sinin temel avantajlarından biri, tek bir birleşik API uç noktası aracılığıyla göl evleri, ambarlar ve veritabanları gibi birden çok veri kaynağını kullanıma sunma özelliğidir. Bu, uygulamalarınızın tek bir GraphQL sorgusunda farklı kaynaklardan veri alabildiği ve birden çok API'ye veya veritabanına ayrı olarak bağlanma gereksinimini ortadan kaldırabileceği anlamına gelir.

Örneğin, bir ambarda müşteri verileriniz ve başka bir göl evinde envanter verileriniz olabilir. İki ayrı API çağrısı yapmak yerine GraphQL API'niz aracılığıyla her iki kaynağı da aynı anda sorgulayabilir, ağ ek yükünü azaltabilir ve uygulama kodunuzu basitleştirebilirsiniz.

Çok kaynaklı sorgular nasıl çalışır?

Birden çok veri kaynağına yayılan bir GraphQL sorgusu gönderdiğinizde, API her veri kaynağına yönelik istekleri otomatik olarak paralel olarak destekler ve ardından sonuçları tek bir yanıtta birleştirir. Bu yaklaşım:

  • Gidiş dönüşleri azaltır: Uygulamanız birden çok sıralı çağrı yerine tek bir istekte bulunur
  • Performansı artırır: Paralel yürütme, genel yanıt sürelerinin daha hızlı olduğu anlamına gelir
  • İstemci kodunu basitleştirir: Verilerin nerede depolandığına bakılmaksızın tek bir API arabirimiyle çalışırsınız

Önemli

Çok kaynaklı sorgular aşağıdaki sınırlamalara sahiptir:

  • Farklı veri kaynaklarına yayılan türler arasında ilişki oluşturamazsınız. İlişkiler yalnızca tek bir veri kaynağı içinde çalışır.
  • Her veri kaynağına yönelik tek tek istekler, sırası garanti edilmeden paralel olarak yürütülür.
  • Bir veri kaynağına yapılan her istek bağımsızdır; birden çok kaynağa yayılan işlem yoktur.

Sorgu örneği

İş senaryosu: Müşteri bilgilerini ve ürün envanteri durumunu yan yana görüntüleyen bir pano oluşturduğunuzu düşünün. Müşteri verileriniz bir satış ambarında (ContosoSales) bulunurken, ürün envanteriniz tedarik zinciri sistemleriniz tarafından güncelleştirilen ayrı bir göl evinde (ContosoInventory) yönetilir. Çok kaynaklı destek olmadan iki ayrı API çağrısı yapmanız, iki farklı bağlantıyı yönetmeniz ve verileri uygulama kodunuzda kendiniz birleştirmeniz gerekir.

GraphQL için Doku API'siyle tek bir sorguda her iki kaynaktan da veri alabilirsiniz:

query {
  customers (first: 1) {
    items {
      FirstName
      LastName
    }
  }
  inventories (first: 1) {
    items {
      Name
    }
  }
}

Bu tek istek , ContosoSales veri kaynağından müşteri kayıtlarını ve ContosoInventory veri kaynağındaki envanter öğelerini paralel olarak alır ve bunları tek bir yanıtta birleştirir. Panonuz, ihtiyaç duyduğu tüm verileri iki yerine bir API çağrısıyla alır.

İsteğin çıktısı şu şekildedir:

{
  "data": {
    "customers": {
      "items": [
        {
          "FirstName": "Orlando",
          "LastName": "Gee"
        }
      ]
    },
    "inventories": {
      "items": [
        {
          "Name": "AWC Logo Cap"
        }
      ]
    }
  }
}

Yanıt yapısı sorgu yapısını yansıtır. nesnesinin data içinde, yaptığınız iki sorguya karşılık gelen iki üst düzey alanınız (customers ve inventories) vardır. Her alan, gerçek sonuçları içeren bir items dizi içerir. Öğeler customers gibi FirstName ve LastName özelliklere sahipken, diğer öğeler de sorguda tam olarak istendiği gibi inventories ve Name özelliklere sahiptir.

Bu isteği yürütürken sorgu görünümü şöyle görünür:

İki veri kaynağına yayılan bir sorguyu gösteren düzenleyici ekranının ekran görüntüsü.