Şemayı yapılandırma
Şemayı yapılandırmaSema Ad Alanı Belirleme

Sema Ad Alanı Belirleme

Plugin'ler tarafından semaya eklenen tüm türlerin ve arayüzlerin otomatik olarak ad alanı almasını sağlayın.

Sema ad alanı belirleme, farklı sahiplerin (örneğin şirketteki farklı ekipler veya üçüncü taraf plugin'ler) bir tür ya da arayüz için aynı adı kullandığında ortaya çıkan adlandırma çakışmalarını önler.

Örneğin, "AwesomeWP" şirketinin Tutorials ve Sales ekiplerinin her ikisinin de şirketin GraphQL seması için bir Product türü oluşturduğunu ve bir çakışmaya yol açtığını düşünelim.

Semaya ad alanı belirlenerek, iki tür otomatik olarak AwesomeWPTutorialsProduct ve AwesomeWPSalesProduct adlarına dönüştürülür; böylece semayı elle değiştirmek ya da ekiplerin birbirleriyle iletişim kurması gerekmeden çakışma önlenir.

WordPress veri modelindeki varlıklar ad alanı almaz

WordPress veri modeli kanonik kabul edilir ve GraphQL şema türleri (Post ve User gibi) ile arayüzleri (Commentable ve WithMeta gibi) ad alanı almaz.

Uç noktalarda sema ad alanı belirleme

Semanın ad alanı alıp almayacağını tanımlayabileceğimiz 2 düzey vardır. Öncelik sırasıyla:

1. Sema yapılandırmasında

Özel bir uç nokta veya persisted query için sema ad alanı belirleme, ilgili sema yapılandırması aracılığıyla tanımlanabilir:

Namespacing, Sema yapılandırmasında ayarlanmış

2. Ayarlarda tanımlanan varsayılan mod

Sema yapılandırmasının değeri "Default" ise, Ayarlarda tanımlanan mod kullanılır:

Ayarlarda Namespacing
Ayarlarda Namespacing

Ad alanlı semayı görselleştirme

Ad alanlı semayı görselleştirmek için Voyager client kullanın.

Namespacing devre dışı bırakıldığında, WordPress seması şu şekilde görünür:

İnteraktif sema

Etkinleştirildiğinde, plugin'ler tarafından eklenen türler ve arayüzler ad alanı alır ve şu şekilde görünür:

Ad alanlı interaktif sema

(Ad alanlı olmayan) tür adlarını sorgulama

Namespacing etkinleştirildikten sonra, türler hem ad alanlı hem de ad alansız tür adları kullanılarak sorgulanabilir. Dolayısıyla, yalnızca çakışan türleri içeren queries düzenlenmesi gerekir; hepsi değil.

Örneğin, AwesomeWP'nin Sales ekibinin aynı zamanda bir Discount türü varsa, bu tür adını isteyen bir query yine de çalışır:

query {
  discounts {
    ...DiscountProps
  }
}
 
fragment DiscountProps on Discount {
  price
  dateRange
}

Yalnızca çakışan Product türü, herhangi bir belirsizliği ortadan kaldırmak için query'de AwesomeWPSalesProduct olarak güncellenmelidir:

query {
  products {
    ...ProductProps
  }
}
 
fragment ProductProps on AwesomeWPSalesProduct {
  price
  dateRange
}

GraphQL spesifikasyonu

Bu işlevsellik şu anda GraphQL spesifikasyonunun bir parçası değildir, ancak şu konuda talep edilmiştir: