Yükleniyor...

2 Mayıs 2020

RestSharp Nedir ?

Merhaba arkadaşlar, uzun bir zaman sonra tekrar aranızda olmaktan dolayı mutlu olduğumu belirtmek isterim. 🙂 RestSharp özellikle .Net projelerinde kullanılabilirliği yüksek olan bir Nuget paketi olduğunu söyleyebilirim.

Bir .net projesi geliştirdiğinizi ve projenizde hem web hemde api katmanının var olduğunu düşünelim. Web katmanında bir controller’dan web api hizmetinize istek atma şansınız var ve gelen veriyi sorunsuz bir şekilde kullanabilirsiniz. Get ve Post işlemlerini gayet rahat bir şekilde kullanabilirsiniz.

1.ADIM RestSharp Kurulumu

Nuget Package vasıtasıyla RestSharp kurulumunu gerçekleştirelim.

2.ADIM RestSharp Service Manager Oluşturulması

RestSharp’ı başarıyla bir şekilde Nuget Package’den kurduktan sonra .Web katmanınızın içnde ServiceManager diye bir klasör açalım ve içerisine RestSharpManager adında bir sınıf oluşturalım. İsimlendirmeler tamamen size ait, istediğiniz klasör ismi veya sınıf ismi girebilirsiniz.

RestSharpManager’ın kodları ise şu şekildedir.

RestSharpManager Kodlaması

using Newtonsoft.Json;
using RestSharp;
using SeizeTheDay.Core.Constants;
namespace SeizeTheDay.Web.ServiceManager
{
    public class RestSharpManager
    {
        private const string ServerIp = ApiUrlConstants.BaseUrl; //constants
        protected static RestClient Client;
        protected static object LockSync = new object();
        public static void Init()
        {
            lock (LockSync)
            {
                if (Client != null) return;
                Client = new RestClient(ServerIp);
                //var req = new RestRequest("values/Init", Method.GET);
                //Client.Execute(req);
                //var statu = Client.Execute<Dictionary<string, object>>(req);
                //var value = statu.Data.FirstOrDefault(p => p.Key == "Result").Value.ToString();
            }
        }
        public static TResponse RestSharpGet<TResponse>(string url)
        {
            var req = new RestRequest(url, Method.GET);
            //req.OnBeforeDeserialization = resp => { resp.ContentType = "application/json"; };
            var response = Client.Execute(req);
            return JsonConvert.DeserializeObject<TResponse>(response.Content);
        }
        public static TResponse RestSharpPost<TResponse>(string url, object data)
        {
            var jsonToSend = JsonConvert.SerializeObject(data);
            var req = new RestRequest(url, Method.POST);
            req.AddParameter("application/json; charset=utf-8", jsonToSend, ParameterType.RequestBody);
            req.RequestFormat = DataFormat.Json;
            var response = Client.Execute(req);
            return JsonConvert.DeserializeObject<TResponse>(response.Content);
        }
    }
}

3.Adım Sabitler Oluşturma

Yukarıda kod kısmında ApiUrlConstants.BaseUrl kısmı ilginizi çekmiş olmalı. Burada web api hizmetimizin linkini belirlememiz lazım ve burada bu linki belirtmemizin amacı web katmanı ayağa kalktığında aynı anda api katmanında ayağa kalkması gerekmektedir. Örneğin benim web api için ana linkim local ortamda şu şekildedir;

public const string BaseUrl = “https://localhost:44367/api/”;

Sabitleri yani Constants’ları ben Core katmanımda bir sınf içerisinde oluşturdum ve Web katmanında orada çağırıyorum. Siz api hizmetinizi yarın bir gün deploy ettiğinizde linkiniz değişecek tabiki.

4.Adım Global.asax RestSharpManager’i Çalıştırma

Bu adımda ise Global.asax’ın içerisinde Application_Start fonksiyonunun içerisinde service manager’ı çalıştırmamız gerekli. Bunun amacı yukarıda da belirtmiş olduğum gibi, web katmanı ayağa kalktığında api katmanınında eş zamanlı olarak ayağa kalkması gerekmektedir ve istek gönderimlerinde herhangi bir zaman kaybı olmaması içindir.

Global.asax kodları aşağıdaki gibidir;

using SeizeTheDay.IoC.App_Start;
using SeizeTheDay.Web.ServiceManager;
using System.Web.Http;
using System.Web.Mvc;
using System.Web.Optimization;
using System.Web.Routing;
namespace SeizeTheDay.Web
{
    public class MvcApplication : System.Web.HttpApplication
    {
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            GlobalConfiguration.Configure(WebApiConfig.Register);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);
            //Ninject Settings
            //ControllerBuilder.Current.SetControllerFactory(new NinjectControllerFactory(new BusinessModule(), new AutoMapperModule()));
            //Unity Settings
            UnityConfigMvc.RegisterComponents();
            //for API
            RestSharpManager.Init();
        }
    }
}

5.Adım Örnek Çalışma

Hadi gelin RestSharpManager servisimizin çalışıp çalışmadığını bir bakalım. 🙂 Kendi projemden örnek bir çalışma aşağıdaki gibidir.

ÖRNEK PROJE

Örnek proje için Github adresimdeki bu projeyi inceleyebilirsiniz.

Posted in Asp.net MVC, BilişimTaggs:

Bir Cevap Yazın