REST API Kullanımı
REST API Kullanımı, modern C# uygulamaları geliştiren yazılım mühendisleri için kritik bir beceridir. REST (Representational State Transfer) API’ler, istemci ve sunucu arasında HTTP protokolü üzerinden veri alışverişi sağlar. GET, POST, PUT ve DELETE gibi HTTP yöntemlerini kullanarak verileri almak, eklemek, güncellemek ve silmek mümkündür. C# ile REST API kullanımı, özellikle mikroservis mimarisi, web uygulamaları ve veri odaklı sistemlerde uygulamaların veri entegrasyonunu sağlamak için önemlidir.
C# dilinde REST API’lere erişim genellikle System.Net.Http namespace’i altındaki HttpClient sınıfı aracılığıyla gerçekleştirilir. Async/await kullanımı ile asenkron işlemler yapılabilir, bu sayede uygulamanın performansı ve yanıt süresi optimize edilir. Ayrıca JSON verilerini işlemek için System.Text.Json ile veri serileştirme ve deserializasyon yapılır. Koleksiyonlar (List, Dictionary) ve sınıf temelli modeller kullanılarak veri tip güvenliği sağlanır.
Bu eğitimde okuyucu, C# ile REST API’lere bağlanmayı, veri alıp işlemeyi, hata yönetimi ve performans optimizasyonunu öğrenecek. Ayrıca OOP prensiplerinin ve algoritmik düşüncenin REST API kullanımına nasıl entegre edileceği gösterilecek. Bu bilgi, yazılım geliştirme ve sistem mimarisi bağlamında uygulamaların ölçeklenebilir, güvenli ve sürdürülebilir bir şekilde tasarlanmasına olanak sağlar.
Temel Örnek
textusing System;
using System.Net.Http;
using System.Threading.Tasks;
using System.Collections.Generic;
using System.Text.Json;
namespace RestApiOrnek
{
public class Program
{
private static readonly HttpClient client = new HttpClient();
public static async Task Main(string[] args)
{
try
{
string url = "https://jsonplaceholder.typicode.com/posts";
HttpResponseMessage response = await client.GetAsync(url);
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
List<Post> posts = JsonSerializer.Deserialize<List<Post>>(responseBody);
foreach (var post in posts)
{
Console.WriteLine($"Post ID: {post.Id}, Başlık: {post.Title}");
}
}
catch (HttpRequestException e)
{
Console.WriteLine($"İstek hatası: {e.Message}");
}
}
}
public class Post
{
public int UserId { get; set; }
public int Id { get; set; }
public string Title { get; set; }
public string Body { get; set; }
}
}
Bu temel örnekte, HttpClient kullanılarak JSONPlaceholder API’den veri çekiliyor. GetAsync metodu asenkron olarak veri alır ve EnsureSuccessStatusCode metodu yanıtın başarılı olup olmadığını doğrular. JsonSerializer ile JSON verisi tip güvenliği sağlanarak Post sınıfına deserializasyon yapılır. Foreach döngüsü ile veriler ekrana yazdırılır. Try/catch bloğu ile olası HTTP hataları yönetilir.
Bu örnek, C#’ta OOP prensipleri, koleksiyonlar ve asenkron programlamayı gösterirken, REST API kullanımında performans ve güvenliğin nasıl sağlanacağını da gösterir.
Pratik Örnek
textusing System;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Threading.Tasks;
using System.Collections.Generic;
using System.Text.Json;
namespace RestApiGelismisOrnek
{
public class Program
{
private static readonly HttpClient client = new HttpClient();
public static async Task Main(string[] args)
{
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
try
{
var newPost = new Post
{
UserId = 1,
Title = "Gelişmiş C# Örneği",
Body = "REST API'ye POST isteği örneği"
};
string json = JsonSerializer.Serialize(newPost);
HttpContent content = new StringContent(json, System.Text.Encoding.UTF8, "application/json");
HttpResponseMessage response = await client.PostAsync("https://jsonplaceholder.typicode.com/posts", content);
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
Post createdPost = JsonSerializer.Deserialize<Post>(responseBody);
Console.WriteLine($"Oluşturulan Post ID: {createdPost.Id}, Başlık: {createdPost.Title}");
}
catch (HttpRequestException e)
{
Console.WriteLine($"İstek hatası: {e.Message}");
}
}
}
public class Post
{
public int UserId { get; set; }
public int Id { get; set; }
public string Title { get; set; }
public string Body { get; set; }
}
}
Pratik örnekte, POST isteği ile REST API’ye veri gönderilmektedir. DefaultRequestHeaders ile başlıklar ayarlanır, veriler JSON’a serileştirilip StringContent ile gönderilir. PostAsync metodu asenkron olarak çalışır ve EnsureSuccessStatusCode ile yanıt doğrulanır. Deserializasyon ile tip güvenliği sağlanır. Bu örnek, OOP prensiplerini ve algoritmik düşünceyi REST API kullanımına entegre ederken, hata yönetimi ve optimizasyon tekniklerini de gösterir.
C#’ta REST API kullanırken en iyi uygulamalar şunlardır: HttpClient örneklerini yeniden kullanmak, async/await ile asenkron programlama yapmak, EnsureSuccessStatusCode ile yanıt doğrulamak ve HttpRequestException ile hataları yönetmek. Yaygın hatalar arasında gereksiz HttpClient oluşturmak (bellek sızıntısı riskine neden olur), yanlış JSON deserializasyonu veya ana thread’i bloklamak bulunur. Performans optimizasyonu için istek sayısını azaltmak, cache kullanmak ve algoritmaları verimli yazmak önemlidir. Güvenlik için HTTPS kullanımı ve dış verilerin doğrulanması gerekir.
📊 Referans Tablosu
C# Element/Concept | Description | Usage Example |
---|---|---|
HttpClient | HTTP istekleri göndermek için kullanılan sınıf | HttpClient client = new HttpClient(); |
Async/Await | Asenkron metod çalıştırma | await client.GetAsync(url); |
JsonSerializer | JSON serileştirme/deserializasyon | Post post = JsonSerializer.Deserialize<Post>(jsonString); |
HttpRequestException | HTTP hatalarını yakalama | catch (HttpRequestException e) { Console.WriteLine(e.Message); } |
StringContent | POST isteğinde veri gönderme | new StringContent(json, Encoding.UTF8, "application/json"); |
REST API kullanımı, C# projelerinde veri alışverişini yönetmek, hataları güvenli şekilde ele almak ve uygulamaları ölçeklenebilir şekilde geliştirmek için kritik bir yetenektir. Bir sonraki adım olarak OAuth/JWT ile kimlik doğrulama, çoklu API entegrasyonu ve sayfalama yönetimi çalışmaları önerilir. System.Net.Http ve System.Text.Json dokümantasyonları ile pratik bilgi derinleştirilebilir.
🧠 Bilginizi Test Edin
Test Your Knowledge
Test your understanding of this topic with practical questions.
📝 Talimatlar
- Her soruyu dikkatle okuyun
- Her soru için en iyi cevabı seçin
- Quiz'i istediğiniz kadar tekrar alabilirsiniz
- İlerlemeniz üstte gösterilecek