Xamarin.Forms ile Katmanlı Mimariye Giriş – 5 (ApiRequest Sınıfını Genişletme)

Merhabalar,

Serimizin bu yazısında projemizin kullanımını genişleteceğiz. İlk önce sizlerden gelen soruları cevaplamaya çalışacağım.

Kadir’in sorusu

Requestlerimizi handle ettiğimiz ApiRequest sınıfımızı incelediğimizde HttpClient instance alırken BaseApiAddress propertysini kullandığımızı görüyoruz. Buradaki ihtiyacı karşılayabilmek için geliştirdiğimiz servisler bazında ApiRequest sınıfı içerisindeki BaseEndpoint propertysini genişletmemiz gerekecek.

IApiRequest

    public interface IApiRequest<out T>
    {
        string string BaseApiAddress { get; set; }{ get; set; }
        T Speculative { get; }
        T UserInitiated { get; }
        T Background { get; }
    }

ApiRequest sınıfı içerisinde kullandığımız BaseApiAddress propertysini IApiRequest interface içine taşıyoruz. Çünkü geliştirdiğimiz servislere inject ettiğimiz IApiRequest interface’i üzerinden bu property’i değiştirmemiz gerekecek.

UserService

        private readonly IApiRequest<IUserEndpoint> _request;
        private readonly IApiRequestSelector<IUserEndpoint> _apiRequestSelector;
        public UserService(IApiRequest<IUserEndpoint> request,
            IApiRequestSelector<IUserEndpoint> apiRequestSelector)
        {
            _request = request;
            _request.BaseApiAddress = "https://reqres.in/api";
            _apiRequestSelector = apiRequestSelector;
        }

Artık geliştirdiğimiz herhangi bir servis içerisinde _request.BaseApiAddress propertysini kullanarak api url’imizi servis özelinde değiştirebiliriz.

Yiğit

Xamarin Developer, Consultant & Architect. Community Leader and Director of Xamarin Türkiye

Post A Reply