Büyük resim
Web uygulaması, site ve API: farkı ne?
Aynı tarayıcıda açılan şeyler aynı şekilde çalışmaz. Önce kimin neyi ürettiğini ayır.
Bir yazı değil. Baştan sona öğrenme rotası.
41 ders, 10 bölüm ve üç seviyede açıklamalı örnek. Sırayla ilerle veya soldaki menüden ihtiyacın olan konuya geç.
Kavramı anlayalım
Bir web sitesi çoğunlukla herkese aynı içeriği gösterir: bir yazı, bir proje sayfası, bir iletişim formu. Bir web uygulaması ise kullanıcıya göre değişen durum taşır: oturum açmış kullanıcı, sepetteki ürünler, yönetim panelindeki taslaklar. Aradaki çizgi bulanıktır; bu sitenin kendisi hem herkese açık bir portföy hem de yalnız sahibinin girebildiği bir yönetim uygulamasıdır.
API (Application Programming Interface) ise insanlara değil programlara konuşur. Ekrana HTML değil, genellikle JSON döner. Bu projede tarayıcı doğrudan veritabanına bağlanmaz; Next.js sunucusu sayfayı üretirken .NET API’ye sorar, API de veritabanına. Her katmanın tek bir sorumluluğu vardır: Next.js sunumu, API iş kurallarını ve güvenlik sınırını, SQL Server kalıcı veriyi yönetir.
Bu kurs boyunca tek bir isteği izleyeceğiz: tarayıcıda bir bağlantıya tıklandığı andan, SQL Server’ın satırı bulup ekrana yazının çizilmesine kadar. Her derste bu yolculuğun bir durağını büyüteceğiz.
Bir hatanın hangi katmanda olduğunu bilmeden onu düzeltemezsin.
Tarayıcıda çalışan kodu güvenlik sınırı sanmak; kullanıcı istemciyi her zaman değiştirebilir.
Bir mektubun şehirdeki yolculuğu
İsteği bir mektup, sunucuyu bir şehir gibi düşün. Senaryo seç, oynat ve mektubun hangi kapıdan geçip nerede durdurulduğunu izle.
Bir yazıya tıkladın. Tarayıcı ‘Bana bu yazıyı gönder’ diyen bir mektup yazıyor.
Aynı konu. Üç farklı derinlik.
Tarayıcı → GET /tr/blog/ilk-yazi → HTML (insan için)
Program → GET /api/posts/ilk-yazi → JSON (program için)Aynı yazı iki farklı biçimde istenebilir: sayfa olarak veya veri olarak.
Bu sayfa gerçek bir sunucuya veya veritabanına bağlanmaz. Kod örnekleri .NET 8, Next.js ve SQL Server için temsilîdir; süreler simülasyondaki örnek değerlerdir, ölçüm değildir. Örnekleri yalnız kendi geliştirme ortamında dene; gerçek bağlantı dizesi, token veya parola paylaşma.
Önce kendin dene.
Bir kullanıcı tarayıcı geliştirici araçlarından ‘Sil’ düğmesinin disabled özelliğini kaldırıp tıklıyor. Bu işlemi gerçekten ne engellemelidir?
Çözümü ve açıklamasını göster
API tarafındaki yetkilendirme:
[Authorize(Roles = "Admin")] ve kaynağın sahibine ait olup olmadığının kontrolü.
Butonu gizlemek yalnız kullanıcı deneyimidir.İstemci tarafı kontroller kolaylık sağlar ama güvenlik sağlamaz. Asıl karar, isteği işleyen sunucuda verilir.