GraphQL'daki Union Type ve Interface'lerin Kullanımı

GraphQL'daki Union Type ve Interface'lerin Kullanımı

GraphQL'de kullanılan Union type ve Interface, farklı tiplerin bir arada tutulması ve ortak alanların bir arada tutulması için kullanılır Union type, farklı tiplerden oluşan bir grupla çalışmayı mümkün kılar ve tek bir yerden birden fazla query yönetimine olanak tanırken, Interface ortak alanları olan farklı tipleri bir arada tutar Bu özellikler, özellikle e-ticaret uygulamaları gibi karmaşık veri yapılarına sahip uygulamalarda kullanışlıdır

GraphQL'daki Union Type ve Interface'lerin Kullanımı

GraphQL, REST API'ler veya SOAP ile karşılaştırıldığında daha esnek bir veri sorgulama ve işleme yöntemi sunar. Bu esneklik, Union type ve Interface gibi GraphQL özellikleriyle daha da artırılır. Union type, farklı tiplerden oluşan bir grupla çalışmayı mümkün kılar ve tek bir yerde birden fazla query'yi yönetmek için kullanılabilirken, Interface, birden fazla tipte gruplanan ortak alanları içeren bir yapıdır ve birden fazla tipteki nesneleri aynı şekilde işlemek için kullanılır.

Union type farklı tipleri bir arada tutarken, interface ortak alanları olan farklı tipleri bir arada tutar. Schema dosyasında tanımlayabileceğiniz bu özellikler, birden fazla tipte çalışmak gerektiğinde veya ortak alanları olan farklı tipleri bir arada tutmak istediğimizde kullanılabilir. Özellikle e-ticaret uygulamaları gibi karmaşık veri yapılarına sahip uygulamalarda Union type ve Interface, komut dosyasının daha okunaklı ve sorguların daha anlaşılır hale gelmesini sağlar.


Union Type Nedir?

Union type, GraphQL'de kullanılan bir türdür. Bu tür, farklı tiplerden oluşan bir grubu bir arada tutarak, tüm tipleri tek bir yerde yönetmeyi mümkün kılar. Bu sayede, birden fazla query'yi tek bir yerden yönetmek mümkün hale gelir.

Bir örnek vermek gerekirse, bir e-ticaret uygulamasında kullanılan ödeme tipleri farklı bankalardan alınabilir. Bu durumda, union type kullanılarak ödeme tipleri bir arada tutulabilir. Bu da, ödeme işlemlerinin tek bir yerden yönetilmesine olanak tanır.


Interface Nedir?

Interface, GraphQL'de birden fazla tipte gruplanan ortak alanları içeren bir yapıdır ve birden fazla tipteki nesneleri aynı şekilde işlemek için kullanılır. Örneğin, bir e-ticaret uygulamasında farklı tipte ürünlerimiz olsun, ancak tüm ürünlerin ortak özellikleri fiyat, stok durumu gibi bilgileri içersin. Bu durumda ürünlere ait bu ortak alanları, interface ile bir arada tutabiliriz.

Interface, aynı zamanda birden fazla tipteki query'leri tek bir query'de birleştirmek için de kullanılabilir. Örneğin, bir e-ticaret uygulamasında tüm ürünleri fiyatlarına göre listelemek isteyelim, ancak ürünlerimizin farklı tipleri olsun. Bu durumda interface ile tüm ürünlerin fiyatlarını ortak bir şekilde alabiliriz.

GraphQL'de, interface tanımlamak için interface anahtar kelimesi kullanılır. Interface, tiplerin türetildiği bir ana yapının oluşturulmasına yardımcı olur. Tüm query'ler interface'in türetildiği gibi davranır ve ortak alanlar aynı şekilde işlenir.

Interface ayrıca, birden fazla tipte kullanılabilir. Örneğin, birim fiyatı hesaplamak için farklı ürün tiplerine göre farklı hesaplama methodları kullanılabiliyor olabilir. Bu durumda interface, farklı tiplerin ortak hesaplama alanlarını bir arada tutarak birim fiyat hesaplama işlemini kolaylaştırabilir.


Union Type ve Interface Arasındaki Fark Nedir?

GraphQL'de kullanılan Union type ve Interface'ler arasındaki en önemli fark, farklı tiplerin bir arada tutulup tutulamamasıdır. Union type, farklı tiplerden oluşan bir grupla çalışmayı mümkün kılar, ancak bu tipler arasında ortak alanlar olması gerekmez. Bir öğenin bir veya daha fazla tipe ait olabileceği durumlarda kullanılır. Interface ise, birden fazla tipte gruplanan ortak alanları içeren bir yapıdır ve birden fazla tipteki nesneleri aynı şekilde işlemek için kullanılır. Farklı tipleri bir arada tutar, ancak bu tiplerin ortak alanları olması gerekir.

Union type ve Interface arasındaki farkı daha iyi anlamak için birkaç örnek verebiliriz. Bir e-ticaret uygulamasında, kullanılan bankalara göre farklı tiplerde ödeme yapılabilir. Bu durumda, union type kullanarak ödeme tiplerini bir arada tutabiliriz. Ancak, bu tipler arasında ortak bir alan olması gerekmez. Öte yandan, bir e-ticaret uygulamasında tüm ürünlerin ortak alanları olan fiyat, stok durumu gibi bilgiler interface ile bir arada tutulabilir. Bu durumda, farklı tiplerin bu ortak alanlara sahip olması gerekir.

Kısacası, Union type farklı tipleri bir arada tutarken, Interface ortak alanları olan farklı tipleri bir arada tutar. Bu fark, GraphQL'de iki farklı durumda kullanılmasını gerektirir.


Union Type Örneği

Bir e-ticaret uygulaması genellikle farklı bankaların ödeme sistemlerini kullanır. Bu durumda, kullanıcının ödeme yapabileceği farklı ödeme tipleri vardır. Bazı kullanıcılar kredi kartı kullanırken, diğer kullanıcılar banka havalesi veya PayPal gibi diğer ödeme yöntemlerini tercih edebilir. Bu farklı ödeme tipleri için ayrı ayrı sorgular oluşturmak yerine, union type kullanarak ödeme tiplerini tek bir yerde bir araya toplayabiliriz.

Örneğin, union type kullanarak tüm ödeme tiplerinin ortak özelliklerini tutabiliriz. Bu özellikler arasında ödeme miktarı, ödeme tarihi ve ödeme yöntemi gibi bilgiler yer alabilir. Uygulama, hangi ödeme yöntemini seçerse seçsin, ödeme bilgilerine kolayca erişebilir.

Ödeme Yöntemi Bilgiler
Kredi Kartı Kart numarası, son kullanma tarihi, güvenlik kodu
Banka Havalesi Hesap numarası, IBAN, banka adı
PayPal Email adresi, şifre

Bu şekilde, müşteri işlem yaparken kredi kartı, banka havalesi veya PayPal gibi farklı ödeme tiplerini seçebilir. Uygulama, union type sayesinde tüm ödeme tiplerinin bilgisine kolayca erişir ve ödeme işlemini tamamlar.


Interface Örneği

Bir e-ticaret uygulaması, farklı kategorilerde çok çeşitli ürünleri yönetmek zorundadır. Fakat ürünlerin ortak özellikleri de vardır ve bu özellikleri tek bir yerde saklamak, veri yönetimini önemli ölçüde kolaylaştıracaktır. Bu nedenle, tüm ürünlerin ortak alanları olan fiyat, stok durumu gibi bilgiler interface ile bir arada tutulabilir.

Örneğin, bir ayakkabı sitesinde farklı marka ve modellerde ayakkabılar bulunabilir. Ancak hepsinin fiyatı, stok durumu, bedenleri gibi ortak özellikleri vardır. Interface, bu ortak özelliklerin tanımlanmasına olanak tanır ve bu bilgilerin yönetimi daha kolay hale gelir.

Tablo kullanarak, interface kullanımını daha net bir şekilde gösterebiliriz:

Ayakkabı Bilgisi Türü Özellikleri
Nike Air Max Fiyat 400 TL
Stok Durumu 30 Adet
Bedenler 39, 40, 41, 42, 43
Adidas Neo Fiyat 300 TL
Stok Durumu 15 Adet
Bedenler 36, 37, 38, 39, 40

Interface kullanarak, her ürünün fiyatı, stok durumu ve bedenleri gibi ortak özellikleri aynı alanda toplanır ve daha düzenli bir yapı oluşturulmuş olur.


Union Type ve Interface Nasıl Kullanılır?

GraphQL'deki union type ve interface'ler, schema dosyasında tanımlanarak kullanılabilirler. Union type kullanırken, tüm tiplerin ortak alanlarının isimleri aynı olmalıdır. Bu sayede, farklı tipleri bir arada toplayabilir ve birden fazla query'yi tek bir yerde yönetebilirsiniz. Union type nedir ve nasıl kullanılır örnekleriyle birlikte daha net anlaşılabilir.

Interface ise farklı tiplerin ortak alanlarını gruplandırır ve ortak alanları olan birbirinden farklı tipleri aynı şekilde işleyebilirsiniz. Interface örneklerinin yanı sıra, union type ve interface arasındaki farklar da detaylı bir şekilde öğrenilebilir.


Ne Zaman Union Type veya Interface Kullanılmalıdır?

GraphQL'de kullanılan Union type ve Interface yapıları, farklı amaçlar için kullanılmaktadır. Union type, birden çok farklı tipten oluşan grupları yönetmek için kullanılır. Farklı tipleri bir arada tutarak, verilerin tek bir yerde yönetilmesi sağlanır. Örneğin, e-ticaret uygulamasındaki ödeme tipleri, farklı bankaların ödeme servisleri gibi farklı tiplerden oluşur. Bu durumda, union type kullanılarak farklı ödeme tipleri bir arada tutulabilir.

Interface ise farklı tiplerin ortak özellikleri olan alanları içerir ve bu özelliklerin tek bir yerde tutulmasını sağlar. E-ticaret uygulamasında tüm ürünlerin ortak alanları olan fiyat, stok durumu gibi bilgiler, interface kullanılarak tek bir yerde tutulabilir. Böylece, verilerin tekrarlanması önlenir ve yönetimi kolaylaştırılır.

Birden fazla tipte çalışmak gerektiğinde, union type tercih edilirken, farklı tiplerin ortak alanlarını tek bir yerde yönetmek istenildiğinde interface kullanılması önerilir. Böylece, verilerin birden çok yerde tekrarlanması önlenir ve yönetimi kolaylaştırılmış olur.