- Konu sahibi
- #1
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/productstüm ürünleri getirir.GET /api/products/15kimliği 15 olan ürünü getirir.POST /api/productsyeni ürün oluşturur.PUT /api/products/15mevcut ü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:
- Kaynağı belirleyin: Bu örnekte kaynak
productsolsun. - Her işlem için uygun HTTP metodunu seçin: okuma için
GET, oluşturma içinPOST, güncelleme içinPUTveyaPATCH, silme içinDELETEkullanın. - URL'yi eylem adı yerine kaynak adıyla tasarlayın.
/api/productskullanmak,/api/getProductskullanımından daha açık ve sürdürülebilirdir. - İstek ve yanıt modellerini ayrı düşünün. İstemcinin göndermemesi gereken verileri doğrudan veritabanı nesnesiyle kabul etmeyin.
- Başarı ve hata durumları için tutarlı HTTP durum kodları ve JSON hata gövdeleri döndürün.
- İ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şen | Görevi | Örnek |
|---|---|---|
| İstemci | HTTP isteği gönderir ve yanıtı kullanır | Masaüstü uygulaması |
| Endpoint veya controller | İsteği karşılar ve yönlendirir | GET /api/products |
| İş katmanı | Uygulama kurallarını yürütür | Stok kontrolü |
| Veri erişimi | Kalıcı veriyi okur veya değiştirir | Veritabanı 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
POSTseç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 OKdö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.