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.