dev-tools

GraphQL

GraphQL, API'ler için bir sorgu dilidir ve bu sorguları verinize karşı çalıştırmak için bir runtime içerir; başlangıçta Facebook'ta geliştirilmiş ve 2015'te açık kaynak yapılmıştır. Temel fikri, sunucunun her endpoint için sabit bir yanıt şekli dikte etmesi yerine, istemcinin tek bir istekte tam olarak hangi alanlara ihtiyacı olduğunu belirtmesine izin vermektir — klasik alternatif REST'tir; burada bir kullanıcının profilini ve son siparişlerini almak iki ayrı endpoint çağrısı (ya da herhangi bir ekranın gerçekte ihtiyaç duyduğundan her zaman daha fazla veri döndüren tek bir şişkin endpoint) gerektirebilir. AI/SaaS kuran ekipler için neden önemli: GraphQL, aynı temel verinin farklı alt kümelerine ihtiyaç duyan birden fazla farklı frontend (web, mobil, bir ortak entegrasyonu) olduğunda özellikle değerlidir — her istemci, backend ekibinin her istemci ihtiyacı için ayrı bir özel endpoint inşa edip sürdürmesine gerek kalmadan tam olarak ihtiyacı olan alanları isteyebilir; ayrıca REST'in yaygın "aşırı çekme" (ihtiyaçtan fazla veri alma) ve "az çekme" (bir ekranın verisini toplamak için birden fazla round trip gerektirme) sorunlarını ortadan kaldırır. Bir API'yi tüketen AI ajanları için de temiz bir uyum sağlar: tek, güçlü tipli bir GraphQL şeması, bir modele hangi verinin mevcut olduğunun ve nasıl ilişkilendiğinin eksiksiz, kendini açıklayan bir haritasını verir; bazı AI araçları bunu ayrı bir dokümantasyona ihtiyaç duymadan doğru sorgular üretmek için doğrudan inceleyebilir. Nasıl çalışır: bir GraphQL API'si tek bir endpoint (tipik olarak `/graphql`) ve mevcut her tip, alan ve ilişkiyi tanımlayan güçlü tipli bir şema sunar. Bir istemci, tek bir istekte iç içe ilişkiler dahil olmak üzere istediği verinin tam şeklini tanımlayan bir sorgu gönderir; sunucu istenen her alanı çözer (genellikle bir veritabanından veya başka bir servisten veri getiren alan başına "resolver" fonksiyonları aracılığıyla) ve istenen şekle tam olarak uyan bir JSON yanıtı döndürür — ne fazla ne eksik. Örnek üzerinden: bir mobil uygulama ekranının bir kullanıcının adına, en son üç siparişinin toplamlarına ihtiyacı var, başka hiçbir şeye değil. `/users/42`'ye bir REST çağrısı (bu, ekranın ihtiyaç duymadığı adres, faturalama geçmişi ve tercihler dahil 30 alan döndürebilir) ve ardından `/orders?userId=42`'ye ikinci bir çağrı yapmak yerine, mobil istemci tek bir GraphQL sorgusu gönderir: `{ user(id: 42) { name orders(limit: 3) { total } } }`. GraphQL sunucusu tam olarak bu alanları altta yatan veritabanından çözer ve `{"user": {"name": "Alex Chen", "orders": [{"total": 49.99}, {"total": 120.00}, {"total": 15.50}]}}` döndürür — tek istek, tek round trip, ekranın ihtiyaç duyduğu veri, fazlası değil.

İlgili terimler

Daha fazla Geliştirici Araçları terimi