Refit Nedir? .NET Üzerinde Örnek Kullanımı ve Http Client İle Karşılaştırılması

Serkan Akcay
3 min readApr 5, 2024

--

Refit, .NET platformunda RESTful servislerle etkileşim kurmayı kolaylaştıran bir kütüphanedir. Bu kütüphane, HTTP isteklerini kolayca tanımlamanıza ve yönetmenize olanak tanırken, aynı zamanda servislerin API belgelerini referans alarak, kodunuzda ilgili endpointlerin imzalarını oluşturmanıza yardımcı olur. Bu, yazılımcıların RESTful servislerle çalışırken tekrarlayıcı kodları azaltır ve daha okunabilir, bakımı kolay kodlar yazmalarına olanak tanır.

Örnek bir kullanım senaryosuna bakalım:

Öncelikle, bir RESTful servisimiz olduğunu ve bu servis üzerinden bir bankacılık uygulaması geliştirdiğimizi varsayalım. Bu uygulamada, kullanıcıların hesap bilgilerini almak için servisi kullanacağız. Refit kullanarak bu işlemi nasıl gerçekleştirebiliriz:

dotnet add package Refit
  public class Account
{
public int AccountId { get; set; }
public string OwnerName { get; set; }
public decimal Balance { get; set; }
}

using Refit;
using System.Threading.Tasks;

namespace RefitExample
{
public interface IExampleApi
{
[Get("/example")]
Task<string> GetExampleData();
}
}
using System;
using Refit;
using System.Net.Http;
using System.Threading.Tasks;

namespace RefitExample
{
class Program
{
static async Task Main(string[] args)
{
var exampleApi = RestService.For<IExampleApi>("https://api.example.com");

try
{
HttpResponseMessage response = await exampleApi.GetExampleDataResponse();

if (response.IsSuccessStatusCode)
{
string responseData = await response.Content.ReadAsStringAsync();
Console.WriteLine("API Response: " + responseData);
}
else
{
Console.WriteLine("Error: " + response.ReasonPhrase);
}
}
catch (ApiException ex)
{
Console.WriteLine("Error: " + ex.Message);
}
}
}
}

Yukarıdaki örnek, Refit’in basit kullanımını göstermektedir. IExampleApi arayüzü, belirli bir hesap bilgisini almak için kullanılacak HTTP GET isteğini tanımlar. Ardından, bu arayüzü temsil eden bir nesne oluşturulur ve istek yapılır. Refit, bu arayüzde tanımlanan metodun gerçek bir HTTP isteğine dönüştürülmesinden sorumludur.

Refit’in Artıları:

  1. Kolay Kullanım: Refit, RESTful servislerle etkileşimi basitleştirir ve tekrarlayıcı kodları azaltır.
  2. Dökümantasyon Kullanımı: Servislerin API belgelerine dayanarak, kodda endpointlerin imzalarını otomatik olarak oluşturabilir.
  3. Geliştirilmiş Okunabilirlik ve Bakım: Daha temiz ve okunabilir kod yazmanıza olanak tanır, bu da bakımı kolaylaştırır.

Refit’in Eksikleri:

  1. Esneklik: Bazı karmaşık senaryolar için yetersiz olabilir. Özellikle özelleştirilmiş istekler gerektiren durumlarda kısıtlamaları olabilir.
  2. Performans: Bazı durumlarda, manuel olarak yazılmış HTTP istekleri Refit’ten daha hızlı olabilir.

Http Client ile Karşılaştırma:

HttpClient, .NET’in standart bir kütüphanesidir ve HTTP üzerinden istekler yapmak için kullanılır. Refit’e kıyasla daha düşük seviyeli bir yaklaşım sunar. HttpClient kullanırken, isteklerinizi manuel olarak oluşturmanız ve yönetmeniz gerekir.

Artıları:

  1. Esneklik: HttpClient, daha fazla esneklik sağlar ve her türlü HTTP isteğini yönetebilirsiniz.
  2. Performans: Manuel olarak optimize edilmiş HttpClient istekleri, Refit’e kıyasla daha hızlı olabilir.

Eksikleri:

  1. Daha Fazla Kod Karmaşası: HttpClient kullanırken, isteklerinizi manuel olarak oluşturmanız gerektiği için daha fazla kod yazmanız gerekir. Bu, kod karmaşasına ve hata yapma olasılığınıza neden olabilir.
  2. Dökümantasyon Kullanımı Zorluğu: HttpClient ile çalışırken, API belgelerine dayalı kod üretimi için doğrudan destek yoktur. Bu, servis değişiklikleri olduğunda kodunuzu güncellemeyi zorlaştırabilir.

Benchmark kaynak : https://dev.to/serhii_korol_ab7776c50dba/the-story-how-i-implemented-a-web-application-for-benchmarking-popular-http-clients-22pj

--

--