11. SınıfBilişim Teknolojileri

RESTful API Tasarımı ve JSON Akışı

Bilişim Teknolojileri · 11. Sınıf · Sunucu Taraflı Programlama

Konu Anlatımı

Uygulama Programlama Arayüzü Neden Gerekir?

Bir uygulama programlama arayüzü, iki yazılımın birbirine veri gönderip alırken uyduğu sözleşmedir. Arayüzün arkasındaki mantık, veri tabanı ve dağıtım biçimi değişse bile sözleşme korunursa istemci tarafında değişiklik gerekmez. Bu ayrım, aynı servisin web sitesi, mobil uygulama ve rapor aracı tarafından kullanılmasını sağlar.

Arayüz tasarımı, kimin neyi sorduğunu netleştirir: hangi veri isteniyor, hangi işlem yapılacak, hangi hata durumunda ne dönecek. Belirsiz bir sözleşme, taraflar arasında sürekli düzeltme gerektirir ve hataları geç fark edilen hâle getirir.

Kaynak Tabanlı Tasarım

Kaynak tabanlı tasarımda her şey bir kaynak olarak düşünülür: öğrenci, ders, sınav kaydı. Kaynak çoğul isimle adlandırılır ve tek bir kayıt kimliğiyle belirtilir. Eylem ayrı bir uç noktada değil, kaynağın hangi durumda olduğuna göre istek yöntemiyle belirlenir. Bu yaklaşımda uç nokta sayısı azalır, arayüz anlaşılır ve tutarlı hâle gelir.

İstemcinin bir kaynağı isteyip istemediğine, kaynağı değiştirip değiştirmediğine ve kaynağı silip silmediğine karar veren yöntemler standarttır. Bir işlem başka bir işlem yaratmıyorsa tekrar gönderildiğinde ikinci kez etki üretmemelidir; buna tekrar etkisizlik denir. Ödeme gibi kritik işlemlerde istemci, sunucunun çift kayıt oluşturmasını önlemek için bir istek anahtarı gönderir.

Sürümleme ve Geriye Uyum

Arayüz sözleşmesi zamanla değişir. Bu değişiklikler kontrollü olmalıdır. Sürümleme, değişikliğin adres yolunda ya da başlıkta açıkça belirtilmesidir. Yeni alan eklemek geriye uyumludur; bir alanın tipini değiştirmek ya da alanı kaldırmak geriye uyumsuzdur ve yeni sürüm gerektirir.

Uyumlu olmayan bir değişiklik yapıldığında eski istemciler çalışmaz hâle gelir. Bu nedenle kullanımdan kaldırılacak alan ve yöntemler önceden ilan edilir, ölçüm verileriyle desteklenir ve istemcilerin geçiş yapması için süre tanınır. Kaldırılan sürümlere ait ağ günlükleri, hangi istemcinin etkilendiğini göstermek için saklanır.

Sayfalama, Sıralama ve Filtreleme

Bir kaynak tümüyle döndürülmemelidir. Sayfalama, veriyi parçalara bölerek hem sunucu hem istemci yükünü sınırlar. İstemci, devam işaretini isteyin sunucu bir sonraki parçayı döner; böylece veri taşınmaz ve bellek kullanılmaz. Sayfa boyutu büyüdükçe istek sayısı azalır, tek istekte taşınan veri artar; bu denge veri boyutuna göre kurulmalıdır.

Sıralama ve filtreleme kuralları da sözleşmede yazılır. İstemcinin istediği sıralama alanını sunucu doğrulamalı bir listeden seçmelidir, aksi hâlde istediği sütun üzerinden pahalı tarama yapılabilir. Filtrelemede kullanılan alanlar da aynı biçimde sınırlanır.

Hız Sınırı, İzleme ve Sözleşme Dokümantasyonu

Hız sınırı, bir istemcinin belirli zaman aralığında yapabileceği istek sayısını sınırlar. Sınır aşıldığında istek reddedilir ve ne kadar beklenmesi gerektiği bildirilir; böylece istemci kendini yavaşlatır. Bu önlem, hatalı bir istemcinin sunucuyu tüketmesini engeller.

Kalıcı bir sözleşme için uç noktalar, istek ve yanıt alanları, hata kodları ve örnekler yazılı olarak tanımlanır. Sürüm notları, değişiklik tarihleri ve kullanımdan kaldırma planı bu tanımın parçasıdır. İstek izleme numarası, kullanıcı bildiriminden sunucu günlüğüne kadar aynı olayı izlemeyi sağlar.

Ölçüm tarafında istek sayısı, hata oranı, ortalama yanıt süresi ve dönen veri boyutu izlenir. Bu değerler eşik aştığında sürüm çıkarma, sınır değiştirme veya altyapı kapasitesi kararları veriye dayalı olarak alınır.

RESTful Sözleşme, JSON Akışı ve Hata Biçimi

Bu bölümde bir RESTful API sözleşmesinin nasıl kurulacağını ve verinin JSON akışı olarak nasıl taşınacağını öğreneceğiz. RESTful tasarımda her şey bir kaynak olarak düşünülür; istek yöntemi, kaynağın hangi durumda olması gerektiğini belirtir. Kaynak adı çoğul kullanılır ve tek bir kayıt kimliğiyle belirtilir.

Veri JSON biçiminde taşınır: çift tırnaklı alan adları ve değerleri, çift tırnaklı sayılar, hatalar için ortak bir gövde yapısı kullanılır. Hata gövdesinde hata kodu, açıklama ve istek izleme numarası bulunur; bu numara kullanıcı bildiriminden sunucu günlüğüne kadar aynı olayı izlemeyi sağlar. Yanıt başlıklarında sürüm ve önbellek bilgisi taşınır.

İstek YöntemiKaynak DurumuJSON Yanıtı
OkumaDeğişmezKayıt ya da kayıt listesi
OluşturmaYeni kayıt eklenirOluşturulan kaydın kimliği
GüncellemeKayıt değişirGüncel kayıt
SilmeKayıt kaldırılırBoş gövde
Hatalı istekDeğişmezHata kodu ve izleme numarası

Günlük Hayattan Bir Örnek

Bir mobil uygulama, sunucudan öğrenci listesini isteyen bir API çağrısı yapıyordu. Sunucu her seferinde listenin tamamını gönderdiği için uygulama yavaş açılıyordu. Sayfalama eklenip veri akışı parçalara bölündüğünde hem ağ hem bellek yükü azaldı; aynı zamanda JSON hata biçimi ortaklaştırıldığı için uygulama tarafındaki hata yönetimi sadeleşti.

Özet

Sık Yapılan Hatalar

  1. Aksiyon için ayrı uç nokta açmak: Kaynağın durumunu yöntemle belirtmek, uç nokta sayısını azaltır ve sözleşmeyi tutarlı kılar.
  2. Hata biçimini değiştirmek: Hata gövdesi ortak değilse istemci her seferinde yeni biçimle uğraşmak zorunda kalır.
  3. Sayfalamayı atlamak: Kaynak tümüyle döndürülürse sunucu ve istemci yükü gereksiz biçimde büyür.

Ne Öğreneceğiz

Kaynak tabanlı uç nokta tasarımı, sürümleme, sayfalama, hız sınırı ve hata sözleşmesi kurallarıyla sunucu ve istemci arasındaki veri akışını düzenler. Bu konuda ögrenme çıktıları:

Ön Bilgi

Bu konuya başlamadan önce temel kavram ve ön koşulları kavramanız yardımcı olacaktır. Konunun çerçevesinde şu kavramlar dikkat ister:

İleri Örnek

Daha ileri bir uygulama:

Soru: Bir uç nokta 2000 kaydın tamamını döndürmektedir ve her kayıt 1,5 KB veri içermektedir.

  1. Kayıt sayısını yaz.
  2. Kayıt başına veri boyutunu yaz.
  3. Çarp ve birimi koru.

Sonuç/cevap: 2000 × 1,5 = 3000 KB veri döner. Bu boyut tek yanıtta taşınması riskli olduğundan sayfalama eklenmeli, istemciye yalnızca ihtiyacı olan alanlar sunulmalıdır.

Adım Adım Çözülmüş Örnek

Sayfa sayısını hesaplama konusunun adımları:

  1. Toplam kayıt sayısını yaz.
  2. Sayfa başına kayıt sayısına böl.
  3. Kalan varsa bir sayfa ekle.

Karşılaştırma Tablosu

KavramAçıklama
Uç nokta adları çoğul kaynak adı ve tekiUç nokta adları çoğul kaynak adı ve tekil kayıt kimliğinden oluşur.
Sayfalama olmadan tüm veri döndürmek sunSayfalama olmadan tüm veri döndürmek sunucu ve ağ yükünü gereksiz artırır.
Uyumlu olmayan alan değişiklikleri yeni Uyumlu olmayan alan değişiklikleri yeni sürüm gerektirir, sessizce değiştirilmez.
Hız sınırı aşımında istek reddedilir ve Hız sınırı aşımında istek reddedilir ve bekleme süresi istemciye bildirilir.
Kritik işlemlerde istek anahtarı ile çifKritik işlemlerde istek anahtarı ile çift kayıt oluşması engellenir.
Hata yanıtı ortak sözleşmeye uyar ve izlHata yanıtı ortak sözleşmeye uyar ve izleme numarası taşır.

Kendini Dene

Soru: Yönerge: Bir okulun öğrenci kayıt uygulaması için arayüz tasarlanıyor. (I) uç nokta listesini ve adlandırmalarını, (II) yetkilendirme kurallarını, (III) sayfalama ve filtreleme kurallarını, (IV) hata sözleşmesini madde madde yaz.

Örnek cevap: Puanlama anahtarı: Uç nokta listesi ve adlandırma gerekçesiyle verilmesi 7 puan; yetkilendirme kurallarının yazılması 6 puan; sayfalama ve filtreleme kurallarının belirlenmesi 6 puan; hata sözleşmesinin tanımlanması 6 puan. Toplam 25 puan. Model cevap: Uç noktalar kaynak adıyla kurulur; kayıt listesi ve tekil kayıt uçları, kayıt oluşturma, güncelleme ve silme işlemleri, ayrıca öğrencinin kendi kayıtlarına özel bir uç tanımlanır. Yetkilendirmede öğrenci yalnızca kendi kayıtlarını, öğretmen kendi sınıfını görebilir. Sayfalamada sayfa boyutu ve devam işareti tanımlanır, filtreleme alanları izinli listeyle sınırlanır. Hata sözleşmesinde hata kodu, açıklama ve istek izleme numarası yer alır.

RESTful API Tasarımı ve JSON Akışı — Sık Sorulan Sorular

Uygulama Programlama Arayüzü Neden Gerekir?

Bir uygulama programlama arayüzü, iki yazılımın birbirine veri gönderip alırken uyduğu sözleşmedir. Arayüzün arkasındaki mantık, veri tabanı ve dağıtım biçimi değişse bile sözleşme korunursa istemci tarafında değişiklik gerekmez. Bu ayrım, aynı servisin web sitesi, mobil uygulama ve rapor aracı tarafından…

RESTful API Tasarımı ve JSON Akışı nedir?

Bir uygulama programlama arayüzü, iki yazılımın birbirine veri gönderip alırken uyduğu sözleşmedir. Arayüzün arkasındaki mantık, veri tabanı ve dağıtım biçimi değişse bile sözleşme korunursa istemci tarafında değişiklik gerekmez. Bu ayrım, aynı servisin web sitesi, mobil uygulama ve rapor aracı tarafından…

RESTful API Tasarımı ve JSON Akışı konusunda ne öğrenilir?

Uç nokta adları çoğul kaynak adı ve tekil kayıt kimliğinden oluşur.

RESTful API Tasarımı ve JSON Akışı konusunda sık yapılan hatalar nelerdir?

Her kaydı tek seferde döndürmek: Sınırsız veri döndürmek bellek ve ağ yükünü artırır, istemciyi kilitler. Sayfalama ile veri boyutu sınırlandırılmalıdır. Alan tipini sessizce değiştirmek: Uyumsuz değişiklikler eski istemcileri kırar. Yeni sürüm açılmalı, kullanımdan kaldırma tarihi ilan edilmelidir.

RESTful API Tasarımı ve JSON Akışı için hangi formüller ve kurallar kullanılır?

Sayfa sayısı = (toplam kayıt sayısı + sayfa boyutu - 1) / sayfa boyutu · İstenen veri hacmi = istek sayısı × istek başına ortalama bayt · Veri boyutu = kayıt sayısı × kayıt başına bayt · Hata oranı = hata döndüren istek sayısı / toplam istek sayısı

RESTful API Tasarımı ve JSON Akışı Kazanımları

Örnek Sorular ve Çözümleri

Örnek Soru 1 kolay

İki yazılım arasında veri alışverişinin uyduğu yazılı sözleşmeye ne ad verilir?

  1. A) Uygulama programlama arayüzü
  2. B) Çevrim içi betik dili
  3. C) Veri tabanı bağlantı dizesi
  4. D) Önbellek yönergesi
Cevabı göster

Doğru cevap: A) Uygulama programlama arayüzü

Uygulama programlama arayüzü kavramı RESTful API Tasarımı ve JSON Akışı konusunun temel bir kavramıdır. Detaylar konu anlatımında verilmiştir.

Örnek Soru 2 orta

İstemcinin her istekte kimlik bilgisini başlıkla göndermesi hangi tasarım ilkesinin gereğidir?

  1. A) Arayüzün durumsuz olması
  2. B) Veri sıkıştırma
  3. C) Önbellek kullanımı
  4. D) Sunucu yedekleme
Cevabı göster

Doğru cevap: A) Arayüzün durumsuz olması

Arayüzün durumsuz olması kavramı RESTful API Tasarımı ve JSON Akışı konusunun temel bir kavramıdır. Detaylar konu anlatımında verilmiştir.

Örnek Soru 3 zor

Bir kaynak için 1250 kayıt bulunmaktadır ve sayfa başına 50 kayıt dönülmektedir. Kaç sayfa gerekir?

  1. A) 25 sayfa
  2. B) 30 sayfa
  3. C) 20 sayfa
  4. D) 26 sayfa
Cevabı göster

Doğru cevap: A) 25 sayfa

Toplam kayıt sayısı sayfa başına kayıt sayısına bölünür: 1250 / 50 = 25 çıkar. Artan olmadığı için sonuç yukarı yuvarlanmaz ve 25 sayfa döner.

Sıradaki adım

Konu anlatımları hesapsız okunur. Quiz, slayt ve deneme için hesap gerekir.

DersTeders ile devam et

Bilişim Teknolojileri için çalışma yolu

  1. OkuKonu anlatımını bu sayfada bitir.
  2. Soru çözÖrnekleri çöz, cevabı açıklamayla karşılaştır.
  3. Quiz ile pekiştirHesapla kendini ölç.

Slaytla adım adım öğren · Tüm dersler · Ana sayfa

Hesap açTüm dersleri keşfet

Konu anlatımları hesapsız okunur; quiz, slayt ve deneme için hesap gerekir.

Bu sayfa RESTful API Tasarımı ve JSON Akışı konusunun anlatımını, kazanımlarını ve örnek sorularını içerir. Konuyla ilgili tüm sorular için testi çöz, diğer konular için DersTeders ana sayfasına geçebilirsin.

Bu konunun öğretmen materyallerini (ders planı, çalışma kâğıdı, çözümlü soru bankası, rubrik) yazdırabilirsin: Yazıcı çıktısı modülünü aç