Mehmet

WFN Üye
Konular
1,851
Mesajlar
1,852
Çözüm
0
Ticaret Puanı
0
Üyelik
1 Ay 6 Gün
Konum
YurtDışı
Web Sitesi
Var
Alanı
Google Adsense
1/1
Konu sahibi

ASP.NET Web API nedir?​


ASP.NET Web API, HTTP üzerinden veri alışverişi yapan web servisleri ve uygulama programlama arayüzleri (API) geliştirmek için kullanılan Microsoft teknolojisidir. Bir masaüstü, mobil veya web istemcisi; Web API'ye HTTP isteği gönderir, API bu isteği işler ve genellikle JSON biçiminde yanıt döndürür.

Yeni projelerde ASP.NET Core belgeleri ile .NET Framework tabanlı ASP.NET Web API belgelerini ayırarak okuyun. Daha eski kaynaklarda geçen ASP.NET Web API ise .NET Framework üzerinde çalışan ayrı bir Web API çerçevesini ifade edebilir. İkisinin ortak amacı HTTP isteklerini karşılamak, yönlendirmek, iş mantığını çalıştırmak ve istemciye yapılandırılmış veri döndürmektir.

Nasıl çalışır?​


Bir istemci, belirli bir URL'ye HTTP metodu ile istek gönderir. API, isteğin yolunu bir controller veya endpoint ile eşleştirir, gönderilen parametreleri ve gövde verisini okur, gerekli işlemi yapar ve HTTP durum kodu ile sonuç döndürür.

Aşağıdaki ürün servisi kurgusal bir API sözleşmesidir; çalışan bir uç noktadan alınmış veri değildir:

  • GET /api/products tüm ürünleri getirir.
  • GET /api/products/15 kimliği 15 olan ürünü getirir.
  • POST /api/products yeni ürün oluşturur.
  • PUT /api/products/15 mevcut ürünü günceller.
  • DELETE /api/products/15 ürünü siler.

Başarılı bir GET isteği örneğin şu JSON verisini döndürebilir:

Kod:
{
  "id": 15,
  "name": "Mekanik Klavye",
  "stock": 8
}

Ürün bulunamazsa API'nin 404 Not Found, geçersiz veri gönderilirse 400 Bad Request döndürmesi beklenir. Böylece istemci, yalnızca yanıt gövdesine değil HTTP durum koduna da bakarak sonucu yorumlar.

ASP.NET Web API ne için kullanılır?​


Web API, arayüz ile sunucu tarafındaki işlemleri birbirinden ayırmak için kullanılır. Örneğin C# ile yazılmış bir masaüstü uygulaması ürün listesini API'den alabilir; aynı API'yi bir mobil uygulama veya JavaScript tabanlı web arayüzü de kullanabilir.

API genellikle veritabanına doğrudan istemci erişimi vermek yerine araya kontrollü bir katman koyar. Bu katmanda doğrulama, yetkilendirme, iş kuralları, veri filtreleme ve hata yönetimi uygulanır. İstemci yalnızca API'nin sunduğu endpoint'leri çağırır.

Basit bir Web API tasarım kararı​


Bir ürün listeleme özelliği geliştirirken şu yaklaşım yeterli bir başlangıçtır:

  1. Kaynağı belirleyin: Bu örnekte kaynak products olsun.
  2. Her işlem için uygun HTTP metodunu seçin: okuma için GET, oluşturma için POST, güncelleme için PUT veya PATCH, silme için DELETE kullanın.
  3. URL'yi eylem adı yerine kaynak adıyla tasarlayın. /api/products kullanmak, /api/getProducts kullanımından daha açık ve sürdürülebilirdir.
  4. İstek ve yanıt modellerini ayrı düşünün. İstemcinin göndermemesi gereken verileri doğrudan veritabanı nesnesiyle kabul etmeyin.
  5. Başarı ve hata durumları için tutarlı HTTP durum kodları ve JSON hata gövdeleri döndürün.
  6. İstemciyle test ederek sonraki adımı belirleyin: Yanıt kodu, JSON biçimi ve hata davranışı beklenen sözleşmeyle uyuşmuyorsa önce endpoint, model bağlama ve doğrulama ayarlarını kontrol edin.

Kavramsal farkı görmek için aşağıdaki karşılaştırma kullanılabilir:

BileşenGöreviÖrnek
İstemciHTTP isteği gönderir ve yanıtı kullanırMasaüstü uygulaması
Endpoint veya controllerİsteği karşılar ve yönlendirirGET /api/products
İş katmanıUygulama kurallarını yürütürStok kontrolü
Veri erişimiKalıcı veriyi okur veya değiştirirVeritabanı sorgusu

Bu ayrım, kullanıcı arayüzünü değiştirmeden sunucu kurallarını yönetmeyi ve aynı API'yi farklı istemcilerden çağırmayı kolaylaştırır.

ASP.NET Web API ile ASP.NET MVC aynı şey midir?​


Klasik .NET Framework dünyasında MVC ile Web API ayrı çerçevelerdir. ASP.NET Core'da controller tabanlı API'ler MVC altyapısını kullanır; API controller'ı genellikle görünüm desteği gerektirmeyen ControllerBase sınıfından türetilir. HTML görünümü üretmek ile veri yanıtı üretmek farklı amaçlardır.

ASP.NET Core, controller tabanlı API ve Minimal API yaklaşımlarını destekler. Seçimi yalnız proje boyutuna bağlamayın; ekibin düzeni, ihtiyaç duyulan filtreler, doğrulama ve mevcut kod tabanı belirleyicidir. İki yaklaşımda da sözleşme, yetkilendirme ve hata davranışı açıkça tasarlanmalıdır.

Sık yapılan hatalar​


  • HTTP metodunu her işlem için POST seçmek: Kaynak işlemini ve istemci davranışını belirsizleştirir.
  • Veritabanı modelini doğrudan dışarı açmak: İç alanların istemciye sızmasına veya istemciden değiştirilmemesi gereken alanların kabul edilmesine yol açabilir.
  • Her durumda 200 OK döndürmek: İstemcinin bulunamayan kayıt, geçersiz istek ve sunucu hatasını ayırt etmesini zorlaştırır.
  • URL'leri fiil ağırlıklı tasarlamak: Kaynak temelli ve tutarlı bir URL yapısı yerine dağınık endpoint'ler oluşturur.
  • Doğrulama yapmadan işleme geçmek: Hatalı verinin iş katmanına veya veritabanına ulaşmasına neden olabilir.

Sık sorulan sorular​


ASP.NET Core'da her geçersiz istek otomatik olarak 400 döner mi?​


Hayır. Controller üzerinde [ApiController] kullanılması model doğrulama hatalarında otomatik 400 davranışı sağlar. İş kuralı ihlalleri, kaydın bulunamaması ve diğer uygulama hataları ayrıca tasarlanır; her yanlış isteğin bu mekanizmayla çözüldüğü varsayılmamalıdır.

Web API yanıtı her zaman JSON olmak zorunda mı?​


Hayır. JSON yaygın bir tercihtir; ancak API'nin yapılandırmasına ve istemcinin kabul ettiği biçimlere göre başka yanıt türleri de kullanılabilir.
 

Sende şimdi bize katılmak ister misin?

Kayıt ol

Bize katılım kolay ve ücretsizdir!

Konuyu görüntüleyenler

Bu konuyu şu anda görüntüleyen üye bulunmuyor.
Robotlar:
  • Anthropic