Aracılığıyla paylaş


GraphQL uç noktalarını çağırma

Veri API oluşturucusu'ndaki (DAB) GraphQL uç noktaları, verileri hassas bir şekilde sorgulamanıza ve değiştirmenize olanak tanır. Her sorgu tam olarak hangi alanlara ihtiyacınız olduğunu bildirir ve sonuçları filtreleme, sıralama ve sayfalama için bağımsız değişkenleri destekler.

VARSAYıLAN olarak DAB, GraphQL uç noktasını şu konumda barındırmaktadır:

https://{base_url}/graphql

Yapılandırma aracılığıyla kullanıma sunulan varlıklar otomatik olarak GraphQL şemasına eklenir. Örneğin, books ve authors varlıklarınız varsa, her ikisi de şemada kök alanlar olarak görünür.

Uyarı

Şemayı ve otomatik tamamlama alanlarını keşfetmek için herhangi bir modern GraphQL istemcisini veya IDE'yi (Apollo, Uykusuzluk veya Visual Studio Code GraphQL uzantısı gibi) kullanın.

Veri API'si oluşturucusunda desteklenen anahtar sözcükler

Konsept GraphQL Amaç
Yansıtma items Hangi alanların döndürüleceğini seçin
Filtering filtre Koşula bağlı olarak satırları kısıtlama
Sıralama orderBy Sıralama düzenini tanımlama
Sayfa Boyutu birinci Sayfa başına öğeleri sınırlama
Devam sonra Son sayfadan devam et

Temel yapı

Her GraphQL sorgusu bir varlığı temsil eden bir kök alanla başlar. Tüm GraphQL istekleri, sorguyu içeren bir JSON gövdesi ile POST, /graphql uç noktasına gönderilir.

{
  books {
    items {
      id
      title
      year
      pages
    }
  }
}

Yanıt, seçim kümenizle aynı şekle sahip bir JSON nesnesidir. Sayfalandırma ve hata ayrıntıları yalnızca uygun olduğunda görünür.

Uyarı

Varsayılan olarak DAB, aksiruntime.pagination.default-page-size () yapılandırılmadığı sürece sorgu başına en fazla 100 öğe döndürür.

POST https://localhost:5001/graphql
Content-Type: application/json

{
  "query": "{ books { items { id title year pages } } }"
}

Başarı:

{
  "data": {
    "books": {
      "items": [
        { "id": 1, "title": "Dune", "year": 1965, "pages": 412 },
        { "id": 2, "title": "Foundation", "year": 1951, "pages": 255 }
      ]
    }
  }
}

Sayfalandırma ile başarı:

{
  "data": {
    "books": {
      "items": [
        { "id": 1, "title": "Dune", "year": 1965, "pages": 412 },
        { "id": 2, "title": "Foundation", "year": 1951, "pages": 255 }
      ],
      "hasNextPage": true,
      "endCursor": "eyJpZCI6Mn0="
    }
  }
}

Hata:

{
  "errors": [
    {
      "message": "Could not find item with the given key.",
      "locations": [{ "line": 1, "column": 3 }],
      "path": ["book_by_pk"]
    }
  ]
}

Sorgu türleri

Her varlık iki standart kök sorgu destekler:

Query Açıklama
entity_by_pk Birincil anahtarına göre bir kayıt döndürür
entities Filtrelerle eşleşen kayıtların listesini döndürür

Bir kayıt döndüren örnek:

{
  book_by_pk(id: 1010) {
    title
    year
  }
}

Birçok değer döndüren örnek:

{
  books {
    items {
      id
      title
    }
  }
}

Sonuçları filtreleme

Döndürülecek kayıtları kısıtlamak için filter bağımsız değişkenini kullanın.

{
  books(filter: { title: { contains: "Foundation" } }) {
    items { id title }
  }
}

Bu sorgu, başlığı "Foundation" olan tüm kitapları döndürür.

Filtreler karşılaştırmaları mantıksal işleçlerle birleştirebilir:

{
  authors(filter: {
    or: [
      { first_name: { eq: "Isaac" } }
      { last_name: { eq: "Asimov" } }
    ]
  }) {
    items { first_name last_name }
  }
}

Desteklenen işleçler olan , eq, neq, lt ve lte için isNull bakın.

Sonuçları sıralama

orderBy bağımsız değişkeni kayıtların nasıl sıralanacağını tanımlar.

{
  books(orderBy: { year: DESC, title: ASC }) {
    items { id title year }
  }
}

Bu, önce azalan düzende year ile ve ardından title ile sıralanmış kitapları geri döndürür.

Daha fazla bilgi için orderBy bağımsız değişken başvurusuna bakın.

Sonuçları sınırlama

Argüman, first tek bir istekte kaç kaydın döndürüleceğini sınırlandırır.

{
  books(first: 5) {
    items { id title }
  }
}

Bu, varsayılan olarak birincil anahtara göre sıralanmış ilk beş kitabı döndürür. Yapılandırılan en büyük sayfa boyutunu istemek için de kullanabilirsiniz first: -1 .

İlk bağımsız değişken referansında daha fazla bilgi edinin.

Devam eden sonuçlar

Sonraki sayfayı getirmek için, önceki sorgudaki imleçle after bağımsız değişkenini kullanın.

{
  books(first: 5, after: "eyJpZCI6NX0=") {
    items { id title }
  }
}

Belirteç, after önceki sayfanın sona erdiği yeri işaretler. Daha fazla bilgi için aşağıdaki bağımsız değişken başvurusuna bakın.

Alan seçimi (projeksiyon)

GraphQL'de yanıtta tam olarak hangi alanların görüneceğini seçersiniz. SELECT * gibi bir joker karakter yoktur. Yalnızca ihtiyacınız olanı isteyin.

{
  books {
    items { id title price }
  }
}

Yanıttaki alanları yeniden adlandırmak için diğer adları da kullanabilirsiniz:

{
  books {
    items {
      bookTitle: title
      cost: price
    }
  }
}

Ayrıntılar için Bakınız, alan projeksiyonu referansı.

Verileri değiştirme

GraphQL mutasyonları, varlık izinlerine bağlı olarak kayıtları oluşturmanıza, güncelleştirmenize ve silmenize olanak sağlar.

Mutasyon Eylem
createEntity Yeni öğe oluşturma
updateEntity Var olan bir öğeyi güncelleştirme
deleteEntity Öğeyi kaldırma

Uyarı

Sonek _by_pk yalnızca sorgular için geçerlidir (örneğin, book_by_pk). Mutasyon adları bu soneki içermez—updateBook_by_pk veya deleteBook_by_pk yerine updateBook ve deleteBook kullanın.

Önemli

GraphQL mutasyonları için etkin bir veritabanı bağlantı havuzu gerekir. Bağlantı dizeniz Pooling=False veya MultipleActiveResultSets=False olarak ayarlanmışsa, mutasyonlar Implicit distributed transactions have not been enabled hatasıyla başarısız olur. Pooling=True ve MultipleActiveResultSets=True (SQL Server) veya veritabanı sağlayıcınızın eşdeğerini ayarlayın.

Tavsiye

GraphQL aracılığıyla kullanıma sunulan saklı yordamlar için DAB, varlık adına execute ön ekini ekler. Örneğin, GetBookById adlı saklı yordam varlığı, şemada executeGetBookById olur. Daha fazla bilgi için saklı yordamlar bölümüne bakın.

Yeni bir kayıt oluştur

Yeni bir create öğe eklemek için mutasyon kullanın.

POST https://localhost:5001/graphql
Content-Type: application/json

{
  "query": "mutation { createBook(item: { id: 2000, title: \"Leviathan Wakes\", year: 2011, pages: 577 }) { id title year pages } }"
}

Var olan kaydı güncelleştir

Var olan bir update öğedeki belirli alanları değiştirmek için bir mutasyon kullanın.

POST https://localhost:5001/graphql
Content-Type: application/json

{
  "query": "mutation { updateBook(id: 2000, item: { title: \"Leviathan Wakes\", year: 2011, pages: 577 }) { id title year pages } }"
}

Kayıt silme

delete Bir öğeyi birincil anahtara göre kaldırmak için mutasyon kullanın.

POST https://localhost:5001/graphql
Content-Type: application/json

{
  "query": "mutation { deleteBook(id: 2000) { id title } }"
}