# GraphQL

Adres: https://softwaredictionary.org/tr/terimler/graphql
Kategori: Backend ve API'ler
Son güncelleme: 2026-09-29
Okunuşu: graf kyu-el

Kısaca: GraphQL, istemcilerin tam ihtiyaç duyduğu veriyi, çoğunlukla tek bir endpoint üzerinden tek istekte istemesini sağlayan API sorgu dili ve çalışma zamanıdır.

## GraphQL nedir?

GraphQL, istemcinin istediği verinin tam biçimini tarif eden bir sorgu yazdığı, sunucunun da aynı biçimde JSON döndürdüğü bir API kurma ve kullanma yöntemidir. 2012'de Facebook'ta geliştirildi, 2015'te açık kaynak olarak yayımlandı ve bugün GraphQL Foundation tarafından sürdürülüyor.

Her GraphQL API'si bir şemanın (schema) etrafında kurulur; şema, sunduğu tüm veri ve işlemlerin tip bilgisi içeren bir tanımıdır. İstemciler veri okumak için query, veri değiştirmek için mutation, gerçek zamanlı güncellemeler almak için de subscription gönderir. Sunucu tarafında resolver adı verilen küçük fonksiyonlar, her alanın değerini bir veritabanından, başka bir API'den ya da herhangi bir kaynaktan getirir.

Faydalı bir benzetme açık büfe ile sabit menüdür. REST endpoint'i her zaman aynı tabağı sunan sabit menü gibidir; GraphQL ise tabağınıza hangi yemekleri koyacağınızı seçmenizi sağlar. Bu, birbiriyle ilişkili birçok nesneden aynı anda veri isteyen mobil uygulamalar ve karmaşık kullanıcı arayüzleri için özellikle işe yarar.

GraphQL bir veritabanı değildir ve SQL'in yerini almaz; veri kaynaklarınızın önünde bir API katmanı olarak durur. REST'e kıyasla over-fetching'i (ihtiyaç duyulmayan alanların gelmesi) ve under-fetching'i (her şeyi almak için birden fazla istek gerekmesi) önler; ancak isteklerin çoğu tek bir endpoint'e gittiği için HTTP önbellekleme ve rate limiting işini zorlaştırır.

## Önemli noktalar

- İstemciler, yanıtta hangi alanları istediklerini tam olarak belirtir.
- Tip bilgisi içeren bir şema, mevcut tüm veri ve işlemleri tanımlar.
- Query'ler veri okur, mutation'lar veriyi değiştirir, subscription'lar güncellemeleri akıtır.
- Çoğu GraphQL API'si, çoğunlukla `/graphql` olan tek bir endpoint sunar.
- GraphQL bir API katmanıdır; veritabanı değildir.

## Örnek: İç içe veri için bir GraphQL sorgusu

```graphql
# Ask for a user's name and the titles of their 3 latest posts
query {
  user(id: "42") {
    name
    posts(last: 3) {
      title
    }
  }
}

# The response is JSON with exactly the same shape:
# { "data": { "user": { "name": "Ada", "posts": [{ "title": "..." }] } } }
```

## Sık sorulan sorular

**GraphQL, REST'ten daha mı iyidir?**

İkisi de her durumda daha iyi değildir. GraphQL, istemcilerin birçok kaynaktan esnek ve iç içe veri ihtiyacı olduğunda öne çıkar; REST ise basit kaynaklar için kurması, önbelleğe alması ve izlemesi daha kolaydır.

**GraphQL bir veritabanı mıdır?**

Hayır. GraphQL bir API sorgu dilidir; gerçek veriyi sunucudaki resolver'lar arka planda veritabanlarından, diğer servislerden ya da dosyalardan getirir.

**GraphQL, HTTP kullanır mı?**

Genellikle evet. Çoğu GraphQL API'si sorguları tek bir endpoint'e HTTP `POST` istekleri olarak alır; ancak spesifikasyonun kendisi belirli bir taşıma yöntemi şart koşmaz.

## Kaynaklar

- [GraphQL Specification](https://spec.graphql.org/)

---

Software Dictionary: https://softwaredictionary.org/tr · https://softwaredictionary.org/tr/llms.txt
