Günümüz web uygulamaları giderek daha karmaşık hale gelmektedir. Bu karmaşıklık, kullanıcıların isteklerini karşılamak ve verileri etkili bir şekilde yönetmek için daha esnek ve verimli bir yaklaşımın benimsenmesini gerektirir. GraphQL, bu ihtiyaca cevap veren bir sorgu dilidir ve modern web uygulamalarında veri alışverişi için kullanılmaktadır. Bu makalede, GraphQL’in ne olduğunu, nasıl çalıştığını ve nasıl kullanıldığını anlatacağız.
GraphQL Nedir?
GraphQL, Facebook tarafından geliştirilen bir sorgu dilidir. Temel olarak, istemci tarafından belirlenen veri ihtiyaçlarına göre özelleştirilmiş API’ler oluşturmak için kullanılır. REST’e benzer şekilde, istemciler sunucudan veri alabilir, ancak GraphQL’in sunduğu esneklik sayesinde istemciler sadece ihtiyaç duydukları veriyi alabilirler. Bu, ağ trafiğini azaltır ve uygulamanın performansını artırır.
GraphQL Nasıl Çalışır?
GraphQL, istemci ve sunucu arasında bir iletişim dilidir. İstemci, sunucudan belirli bir veri kümesini talep etmek için GraphQL sorgularını kullanır. Bu sorgular, istemcinin ihtiyaç duyduğu veri türlerini, ilişkileri ve yapıları belirtir. Sunucu, bu sorguları işler ve istemcinin talep ettiği veriyi geri gönderir.
GraphQL’in belirgin özelliklerinden biri, istemcinin talep ettiği veriyi belirleyebilmesidir. Bu, istemcinin aşırı veri almasını engeller ve aynı zamanda veri almak için birden çok REST çağrısına gerek duymadan birkaç GraphQL sorgusuyla istediği veriyi almasını sağlar.
GraphQL Avantajları
- EsneklikGraphQL, istemcilerin ihtiyaçlarına göre özelleştirilmiş veri alışverişi sağlar. Bu, gereksiz veri alımını önler ve uygulama performansını artırır.
- Tek Bir EndpointGraphQL, tek bir endpoint ile tüm veri taleplerini karşılar. Bu, RESTful API’lerdeki birden fazla endpoint ihtiyacını ortadan kaldırır.
- İleriye Dönük UyumGraphQL, gelecekteki değişikliklere uyum sağlamak için mükemmel bir altyapı sunar. Geriye uyumlu olması, API’lerin kolayca güncellenmesine olanak tanır.
- İlişkisel Veritabanları ile UyumGraphQL, veritabanları arasındaki ilişkileri yönetmede oldukça etkilidir. İstenilen veri, birkaç basit sorgu ile alınabilir.
GraphQL Kullanımı
GraphQL kullanmak için, bir sunucu tarafı (backend) ve bir istemci tarafı (frontend) uygulamasına ihtiyaç vardır. Sunucu tarafında, GraphQL sorgularını işleyen bir API endpoint’i oluşturulur. İstemci tarafında ise, kullanıcı arayüzü ve GraphQL sorgularını oluşturmak için bir GraphQL istemcisi bulunur.
Sunucu (Backend) Uygulaması Örneği (Node.js ve Express):
const express = require('express');
const { graphqlHTTP } = require('express-graphql');
const { buildSchema } = require('graphql');
// Schema oluşturulması
const schema = buildSchema(`
type Query {
hello: String
}
`);
// Resolver fonksiyonu
const root = {
hello: () => 'Merhaba, GraphQL Dünyası!'
};
// Express uygulaması oluşturulması
const app = express();
// GraphQL endpoint'i tanımlanması
app.use('/graphql', graphqlHTTP({
schema: schema,
rootValue: root,
graphiql: true,
}));
// Sunucu başlatılması
const port = 4000;
app.listen(port, () => {
console.log(`Sunucu http://localhost:${port}/graphql adresinde çalışıyor`);
});
İstemci (Frontend) Uygulaması Örneği:
// GraphQL sorgusu
const query = `
{
hello
}
`;
// Fetch API ile GraphQL endpoint'ine istek yapılması
fetch('http://localhost:4000/graphql', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({ query }),
})
.then(response => response.json())
.then(data => console.log(data));
Bu örnek, basit bir “Merhaba, GraphQL Dünyası!” mesajını içeren bir GraphQL API’sini kullanır.