GraphQL ve .NET Core'un Güçlü İkilisi: Hot Chocolate ile Hızlı ve Etkili API Geliştirme - Turkish #2
Bugün Mobil, Web, Veritabanı ve diğer sanal ortamlar arasında iletişimi sağlayan API konusuna kaldığımız yerden devam ediyoruz. Makalenin ilk bölümüne buradan ışınlanabilirsiniz (link here)
GraphQL nedir?
Backend, Frontend ve Mobile takımları arasında esneklik yaratan, bağımsız ve paralel çalışma ortamına olanak sağlayan, REST'e kıyasla maliyeti düşüren ve stabil data kaynağı sunan esnek bir API sorgulama yaklaşımıdır. REST'ten daha esnek bir sorgulamak alanı yaratır, daha az veri aktarımına aracılık eder ve sürekli gereken endpoint inşasını hayatımızdan çıkarır. Ayrıca hata işleme eforunu üstlenir ve dökümantasyon için kalori harcamanızı engeller. Size bu konuyu bir fastfood olarak gördüğümü söylemiştim. Birazdan daha az kalori harcamanıza yardımcı olacak bir başka alternatifle geleceğim. Ama GraphQL'I kullanmadan önce bir kaç noktaya daha bakalım.
GraphQL'in avantaj sağladığı kullanım alanlarından biri de Single Page Application. Bu uygulamalar için de harika bir data kaynağı. Hızlı yükleme zamanı, kolay ve kompakt oluşuyla modüler geliştirmeyle de tasarruf seçeneği sunuyor.
GraphQL hakkında bilgileri graphql.org'dan alacağız.
GraphQL'de Scalar Type
Bizi burada 5 type karşılıyor;
- Int: A signed 32‐bit integer.
- Float: A signed double-precision floating-point value.
- String: A UTF‐8 character sequence.
- Boolean: true or false.
- ID: The ID scalar type represents a unique identifier, often used to refetch an object or as the key for a cache. The ID type is serialized in the same way as a String; however, defining it as an ID signifies that it is not intended to be human‐readable.
- Ayrıca List, Enum, Object ve Custom Types kullanabiliyoruz ve '!' ünlem kullanarak Non-Null field işaretleyebiliyoruz.
Peki, bu GrapQL'den nasıl faydalanacağız?
Öncelikle GraphQL sorgularını işleyecek ve sonuçları dönecek bir GrapQL server veya protokol yürüten uygulamaya ihtiyacımız olacak. Bu serverlar çeşitli programlama dillerinde yazılmış olabilir ve popüler olarlar topluluğu tarafından desteklenmektedir. Işte bunlardan bir kaç popüler olanı;
- GraphiQL: GraphQL sorgularını ve mutasyonlarını çözümlemek için kullanılan kendi web uygulamasıdır, en hızlı ayağa kaldırılan GRAPHQL serveridir.
- Apollo Server: JavaScript, Node.js, Phyton gibi bir çok dilde kullanılabilen, bulut platformları destekleyen çok kapsamlı ve özellikli bir araçtır.
- Express GraphQL: Express.js kullanılarak GraphQL API'lerini hızlı bir şekilde entegre etmeyi amaçlar.
- Relay: Özellikle React ile entegre çalışır ve özel bir GraphQL SDL(Schema Defintion Language) kullanır.
- Nexus: TypeScript kullanılarak tip gübenliği öncelikli mödüler bir yapı sunar.
ve daha bir çok seçenek sıralanabilir.
Ben ise bugün size .net core ile en hızlı entegre olabilen bir uygulama olan ve ChilliCream tarafından, open source yayınlanan "Hot Chocolate". Kalorili demiştim ama şaka değildi. O kadar hızlı implement edeceğiz ki yakacağınız kaloriler yanınıza kâr kalacak. Başlayalım;
1-Öncelikle boş bir .net core projesi açtım;
2-"HotChocolate.AspNetCore" paketini NuGet'tan ekliyorum.
3-Daha sonra Type tanımlamalarımı yani modellerimi oluşturuyorum.
4-Şimdi ihtiyacım olan bu modelleri kullanacağımız bir Query işleme sınıfı;
5-Ve GraphQL servisimizi yapılandırıyoruz;
- Bu kısım projenizde versiyona göre startup.cs veya program.cs tarafına eklenir.
6-Projemizi build edip ctrl+f5 ile başlatıyoruz. Açıldıktan sonra /graphql uzantısına gidiyoruz. Ve işte karşınızda, bu kadar :)
7- Ilk sorgumuzu göndereyim; "Create Document" tıklıyorum, kitabımızın title ve yazarımızın name değerini istediğim için onları editöre ekliyorum;
ve Run;
Size demiştim :) bu kadar basit.