Puan ders bitince hesaba yazılır. Bu dersi tamamlayınca +55 XP alacaksın. Giriş yapmadan ilerlersen puan yalnız bu tarayıcıda durur.
GraphQL riskleri ve güvenli API tasarımı
REST'te her uç sabit bir yanıt şekli döner. GraphQL'de istemci, tek bir uca gönderdiği sorguda hangi alanları istediğini kendisi seçer. Bu esneklik geliştirme hızını artırır ama iki yeni riski birlikte getirir. Birincisi iç gözlemdir (introspection): GraphQL sunucusu varsayılan olarak kendi şemasını sorgulanabilir kılar, yani hangi tip, alan ve ilişkinin var olduğunu isteyen herkese anlatır. Üretimde açık bırakılan bu özellik, saldırgana elle keşfedeceği bir haritayı hazır sunar ve keşif aşamasını neredeyse tamamen ortadan kaldırır. İkincisi iç içe sorgu ve toplu istektir. GraphQL, bir tip içinde başka bir tipin, onun içinde de bir başkasının sorgulanmasına açıktır. Sınır konmamış bir iç içe sorgu, tek istekte katlanarak büyüyen bir yük oluşturur ve sunucuyu REST'te göremeyeceğin kadar hızlı yorar. Beş seviye iç içe geçen bir sorgu, arka planda binlerce veritabanı çağrısına dönüşebilir.
Toplu istek (batching) özelliği de aynı riski taşır. Bir istemci tek bağlantıda binlerce alt sorguyu birleştirip gönderebilir; her biri hız sınırına tek istek olarak görünür, ama sunucu içeride binlerce işlem yapar. Bu yüzden GraphQL için hız sınırı istek sayısına değil sorgunun karmaşıklığına göre kurulur. Karmaşıklık, sorgudaki alan sayısı, iç içe geçme derinliği ve dönecek kayıt sayısı çarpılarak hesaplanır. Derinlik ve karmaşıklık için sabit bir üst sınır konmazsa, tek bir kötü niyetli sorgu bütün sunucuyu meşgul eder ve diğer isteklere sıra gelmez. Bu da GraphQL'i REST'e göre kaynak tüketimi açısından daha dikkatli tasarlanması gereken bir yüzey yapar.