GraphQL’e Giriş

Bir süredir gerek kişisel projelerimde gerekse dahil olduğum kurumlarda GraphQL üzerine çalışıyorum. Gözlemlediğim kadarıyla GraphQL özelinde Türkçe kaynak bulmak neredeyse imkansız. Bu sebeple GraphQL’in resmi dökümantasyonunu elimden geldiğince Türkçeye çevirmeye çalıştım. Umarım faydalı olabileceği kişilere ulaşır. Dökümantasyonun aslına şu adresten ulaşabilirsiniz: https://graphql.org/learn/


GraphQL’in nasıl çalıştığı ve nasıl kullanılacağını bu makale serisinden öğrenebilirsiniz. Bir GraphQL servisini nasıl yazabileceğiniz ile ilgili döküman mı arıyorsunuz? GraphQL’i birçok farklı dilde kullanabilmenize yardımcı olmak için hazırlanmış kütüphaneler var. How to GraphQL adresindeki ücretsiz eğitimlerle derinlemesine bir deneyim elde edebilirsiniz.

GraphQL hem API’larınız için hazırlanmış bir sorgulama dili, hem de sunucu tarafında veriniz için hazırlamış olduğunuz tip sistemlerini kullanarak sorgular çalıştırmaya yarayan bir araçtır. GraphQL belirli bir veritabanı ya da depolama motoru (storage engine) ile doğrudan bağlantılı olarak çalışmaz, bunun yerine mevcut kodunuz ve verileriniz ile desteklenerek çalışır.

GraphQL servisleri tipler (types) ve bu tipler üzerinde tanımlanmış alanlar (fields) ile yaratılır. Daha sonra her tip üzerindeki her bir alana fonksiyonlar bağlanır. Örneğin sisteme giriş yapmış bir kullanıcının kim olduğunu (me) ve bu kullanıcının ismini bize veren servis aşağıdaki gibi gözükür:

type Query {
me: User
}

type User {
id: ID
name: String
}

her tipteki her bir alanın fonksiyonları ile birikte:

function Query_me(request) {
return request.auth.user;
}

function User_name(user) {
return user.getName();
}

Bir GraphQL servisi çalışmaya başladıktan sonra (genellikle bir web servisi üzerinde belirlenmiş bir URL’de çalışır), bu servise doğrulamak ve çalıştırmak için GraphQL sorguları gönderilebilir. Servis bir sorgu aldığında yalnızca tanımlanmış olan tip ve alanlar ile ilgili bir sorgu olup olmadığını kontrol eder, sonrasında daha önce tanımlanmış fonksiyonları çalıştırarak sonuç üretir.

Örnek bir sorgu:

{
me {
name
}
}

Aşağıdaki JSON sonucu üretecektir

{
"me": {
"name": "Luke Skywalker"
}
}

Sorgu dili, tip sistemi, GraphQL servisleri nasıl çalışır, GraphQL kullanırken dikkat edilmesi gereken noktalar ve genel problemlerin çözümlenmesi ile ilgili derinlemesine bir öğrenme tecrübesi için bu makale serisini okumaya devam edin.

Okumaya Devam Et > Sorgu ve Değişimler (Mutations)