GraphQL: REST API “katili” mi?
Parse’da GraphQL desteğinin uygulanmasından sonra birçok insan bana birkaç soru ile ulaştı, bazıları REST API’nin geleceği hakkında endişeliydi.
GraphQL onu “öldürecek” mi?
REST API yöntemlerime ne olacak? Kodumu yeniden yazmam gerekir mi?
Bu makalede bu soruları ele alacağım, ancak kısa cevap: hayır, endişelenmenize gerek yok çünkü GraphQL REST API’yi “öldürmeyecek” ve zaten çalışan REST API yöntemlerinizi yeniden yazma konusunda da endişelenmenize gerek yok.
Contents
Peki, o zaman GraphQL’in olayı nedir?
Bana ulaşan çoğu kişinin sahip olduğu bir yanlış anlama, GraphQL’in tüm arka ucun yerini almak için burada olmadığıdır.
GraphQL, Arka Uç’un yerini almayacak. Ne de Ön Uç’un.
GraphQL bir sorgu dilidir, API’niz için hangi bilgileri aradığınızı belirtmenizin bir yoludur ve bu bilgileri önceden var olan verilerinizden alacak bir çalışma zamanıdır.
Uygulamanıza tam olarak neyi bilmeniz gerektiğini söylemenin ve ardından bu bilgileri almanın farklı bir yoludur (daha iyi bir yol diyebilirim).
Halihazırda var olan ve çalışan REST API yöntemleriniz hakkında endişelenmenize gerek yok. GraphQL’i benimseseniz bile şu anda olduğu gibi çalışmaya devam edeceklerdir. Dikkat edilmesi gereken tek şey, GraphQL’in yalnızca Parse 3.5.0 ve sonrasında çalıştığıdır, bu nedenle Parse 2.x veya daha eski bir sürümden geliyorsanız, bu aynı zamanda Parse’ın kod yapısının değişmesi anlamına gelir.
Yani Parse 3.0 veya üzeri bir sürüm kullanıyorsanız endişelenmenize gerek yok. Sadece 3.5.0’ın üzerinde bir sürüm seçin ve gitmeye hazırsınız.
Parse 2.X kullanıyorsanız, yapmanız gereken bazı kodlama değişiklikleri olacaktır.
REST API’m zaten çalışıyorsa neden GraphQL?
Bu soru da çok sık soruluyor ve ben gerçekten de REST API yerine GraphQL’i seçmenin birkaç önemli avantajı olduğuna inanıyorum.
Kısa vadede, uygulamanız zaten REST API kullanılarak yazılmışsa ve tüm ihtiyaçlarınızı karşılıyorsa, GraphQL’e geçmenin ve sırf bu nedenle kodu yeniden yazmanın bir anlamı yoktur.
Öte yandan, şimdi başlıyorsanız veya karmaşıklık kazanacak ve gelecekte basitleştirilmiş bir bakım için hazır olmak isteyen gelişen bir uygulama öngörüyorsanız, GraphQL gerçekten çok şey katabilir ve size çok değer katabilir.
Değer mi dedin?
Evet, söyledim.
GraphQL, kod geliştirmeyi ve zaman içinde bakımı basitleştirecek ve hatta veri aktarımından tasarruf etmenize yardımcı olabilecek birkaç önemli avantaja sahiptir! Evet! Doğru okudunuz.
Madde madde gidelim:
-
Kod Geliştirmeyi Basitleştirir
En başta, GraphQL ile başlarken, biraz daha fazla kod üretmeniz gerekebilir. Bunun seni korkutmasına izin verme.
GraphQL, özellikle GraphQL Konsolumuzu kullanırsanız, sorgularınızın yazılmasını kolaylaştıracaktır. Parse’ın otomatik olarak oluşturduğu şemaları kullanmak ve tüm sınıflarınız için hem sorgular hem de mutasyonlar için hem genel hem de özel yöntemler yayınlamak size çok zaman kazandıracaktır. Ve çok fazla demek istiyorum.
Dokümantasyon mu? Hiç sorun değil. Bunu da hallettik. Ayrıca otomatik olarak oluşturulur.
Ayrıca, GraphQL ile geliştiricileriniz Parse’ın oluşturduğu şemalara güvenebilecek, böylece hangi yöntemlere sahip olduklarını, her yöntem için parametreleri ve ayrıca mevcut geri dönüşlerin (çıktıların) neler olduğunu önceden bileceklerdir. Artık bu yöntemin ne yaptığını, hangi parametrelerin gerekli olduğunu veya ne döndürdüğünü tahmin etmek veya diğerlerine sormak yok. Hepsi sizin için orada.
-
Bakımı Basitleştirin
GraphQL ile bakım çok çok kolaydır. API’ye yapılan çağrılar temelde aynı olduğundan, yalnızca ilettiğiniz sorguyu veya mutasyonu değiştirmek, döndürülen değerleri veya parametreleri eklemek veya kaldırmak, bunları almak veya iletmek için sorguyu veya mutasyonu değiştirmek kadar kolaydır.
Çok fazla çağrı, blok veya vaat değiştirmeniz gerekmez. Sorguyu veya mutasyonu değiştirin: BITTI!
-
Veri aktarımında tasarruf edin
Back4app’te bir süre çalıştıktan sonra, müşterilere daha hızlı yanıtlar almak için kodlarını optimize etmelerine yardımcı olmak oldukça yaygındır. Ve müşterinin kodlarında bulduğum tüm sorunların büyük çoğunluğu, uygulamanın o anda ihtiyaç duymadığı verilerin alınmasından kaynaklanıyor.
REST API ve hatta Parse çerçeveleri ile uğraşırken çok sık yapılan bir hata, bir nesne için tüm bilgileri almak ve daha sonra bu bilgilerin yalnızca bir kısmını kullanmaktır. Mesela:
Birkaç özelliği olan Person adında bir sınıfınız var: ad, telefon, adres, sosyal güvenlik numarası, e-posta ve diğer birkaç özellik.
Genellikle REST API veya Parse Frameworks kullanan kişiler Person nesnesinin tamamını sorgulamaya çalışır, tüm özelliklerini alır ve ardından bunlardan yalnızca bir veya ikisini kullanır.
GraphQL ile, tam olarak almanız gereken bilgileri belirtmeniz gerektiğinden, geliştiricinin gereksiz bilgileri alma şansı yoktur, bu da çok daha küçük yüklerle sonuçlanır ve bu da daha hızlı yanıtlar, daha az veri planı tüketimi ve genel olarak daha az giden trafik anlamına gelir. Ne kadar harika değil mi?
Bir Deneyin
GraphQL’in geliştirme sürecinize sağlayabileceği faydaları görmenin en iyi yolu onu denemektir.
İşte oynayabileceğiniz ve nasıl davrandığını görebileceğiniz birkaç senaryo:
-
Bir GraphQL sorgusu oluşturmayı deneyin ve tam olarak ne almak istediğinizi belirtmeyin
Bunu yapmanız mümkün olmayacaktır. Zorunlu olarak sizden ne istediğinizi belirtmenizi isteyecek ve yalnızca bunu alacaktır. Başka bir şey yok.
Siz veya geliştiricileriniz bunu yapmayı unutursanız, GraphQL bundan kurtulmalarına izin vermeyecektir.
Aldığım şeyi kaçırıyorum
İşte böyle!
-
Sorgu kullanarak bir nesneyi değiştirmeyi deneyin
Hayır. Bir şeyi değiştirmek mi istiyorsunuz? Doğru yöntemi kullanın: Mutasyon.
Siz veya geliştiricileriniz yanlış yöntemi kullanırsanız GraphQL devam etmelerine izin vermez.
Verileri değiştirmek için bir Sorgu mu? Hayır, hayır, hayır!
Mutasyon sizi korur!
-
Çoklu Nesneler. Çoklu Sorgular? Hayır! TEK Sorgu!
GraphQL, tek bir sorgu ile birden fazla nesne hakkında bilgi almayı gerçekten kolaylaştırır, geliştirmeyi basitleştirir ve kodu hataya daha az eğilimli hale getirir.
Yani bir Person sınıfınız olduğunu ve bir kişinin Dog sınıfından bir köpeğe sahip olabileceğini düşünün. Bu iki sınıftan da bilgi almanız gerekiyor: Kişinin adı ve yaşı ile Köpeğin adı ve cinsi. Çok kolay:
Sürüm oluşturma? Ne için?
Kodun versiyonlanması çoooook 2018’lerde kaldı.
Sorgunuza yeni alanlar ekleyin. Eski aramalar hala çalışacaktır:
Bu işe yarar
Bu da çalışır. Eski türe yapılan çağrılar çalışmaya devam edecektir.
Kullanımdan kaldırılmış alanlar mı dediniz? Çok da kolay:
Sonuç
GraphQL hiçbir şeyi öldürmek için burada değil. Eski şeyleri yapmanın yeni bir yolunu sunmak için burada. Daha iyi, daha hızlı, bakım için daha dostça ve hatalara daha az eğilimli.
Kaydığınızda sizi yolda tutacaktır. Size neyi yapıp neyi yapamayacağınızı söyleyecektir.
Parse ve otomatik olarak oluşturulan yöntemler (hem genel hem de özel) ve dokümantasyon ile birlikte, yolunu öğrenmenizi kolaylaştıracaktır.
Eğer hiç denemediyseniz, denemelisiniz. Bütün havalı çocuklar yapıyor.
GraphQL vs REST hakkında daha fazla bilgi edinmek istiyorsanız Medium gönderimize göz atın.
GraphQL REST API’lerini Öldürecek mi?
Bu sorunun cevabı büyük bir “HAYIR”dır. Zaten çalışan REST API’nizde herhangi bir sorun olmayacaktır. GraphQL’e geçişinizden sonra değişmeyecektir. Ancak bir istisna vardır. Parse 3.5.0’ın üzerinde çalışır. Yani, bundan daha düşük parse kullanıyorsanız, biraz kodlama yapmanız gerekecektir.
GraphQL hakkında yanlış bilinenler nelerdir?
Aşağıda bazı temel yanlış anlamalar yer almaktadır.
-GraphQL, arka ucu değiştirmek için burada değil.
-Bir dil değil, bir araçtır.
İnsanlar, GraphQL’nin API’nize hangi bilgileri aradığınızı ve verilerinden hangi bilgileri alacağınızı bildirecek bir sorgu dili olduğunu bilmelidir.
GraphQL kodunuzun hataya daha az açık olmasını nasıl sağlayacak?
GraphQL ile başladığınızda gereken küçük ekstra kodlama satırları konusunda endişelenmeyin. Gelecekteki görevleriniz için hayatınızı kolaylaştıracaktır.
En büyük avantajı, tek bir sorgu ile birden fazla nesne hakkında bilgi alabilmenizdir. Birden fazla nesne hakkında bilgi almak için ayrı bir sorgu yazmanıza gerek yoktur. Hem zamandan tasarruf etmenizi hem de kod hatalarından kurtulmanızı sağlar.