Junior
GraphQL nedir?
sobes.tech yapay zeka
AI'dan gelen yanıt
GraphQL, API'ler için sorgu dili ve bu sorguları verilerinize uygulamak için bir çalışma ortamıdır. REST'e alternatif sunar, böylece istemci yalnızca ihtiyaç duyduğu verileri tek bir sorguda talep edebilir.
Ana kavramlar:
- Şema: API'de erişilebilir veri türlerini, ilişkilerini ve erişilebilir işlemleri (sorgular, mutasyonlar, abonelikler) tanımlar.
- Sorgular (Queries): Veriyi okumak için kullanılır. İstemci hangi alanlara ihtiyaç duyduğunu belirtir.
- Mutasyonlar (Mutations): Veriyi değiştirmek için kullanılır (oluşturma, güncelleme, silme).
- Abonelikler (Subscriptions): Sürekli bağlantı üzerinden gerçek zamanlı veri almak için kullanılır (örneğin, WebSocket).
Sorgu örneği:
query GetUserData {
user(id: "123") {
name
email
posts {
title
}
}
}
Bu sorguya yanıt şu şekilde olabilir:
{
"data": {
"user": {
"name": "Ivan",
"email": "ivan@example.com",
"posts": [
{ "title": "İlk makalem" },
{ "title": "GraphQL hakkında" }
]
}
}
}
REST'e göre avantajlar:
- Aşırı veri alma (Over-fetching) önlenir: İstemci yalnızca talep ettiği alanları alır.
- Eksik veri alma (Under-fetching) / Çoklu sorgular: Çoğu zaman, tüm gerekli bilgileri tek bir sorguda almak mümkündür, REST'te ise farklı uç noktalara birkaç istek gerekebilir.
- Güçlü tip belirleme: Şema, net dokümantasyon ve sorgu doğrulama sağlar.
- Daha iyi performans: Daha az veri iletimi.
- İstemci tarafında esneklik: İstemciler, sunucudan bağımsız olarak gelişebilir ve ihtiyaç duydukça veri talep edebilir.
Dezavantajlar:
- Sunucu tarafı yapılandırma karmaşıklığı.
- Standart REST önbellekleme yöntemlerine kıyasla önbellekleme sorunları (örneğin, HTTP seviyesinde).
- Hata yönetimi REST'e göre daha karmaşıktır (standart HTTP durum kodları kullanılır).