Merhaba Arkadaşlar,
Bu yazımda Web API üzerinden HTTP Post İsteklerini nasıl karşılarız ve nasıl cevap veririz gibi soruların cevaplarını bulmaya çalışacağız. Öncelikle WEB API’den bahsedecek olursak HTTP Request’lerine dayalı bir sistem olup gelen istekleri karşılayan bir mekanizma olarak akılda tutabiliriz. Bir çok mobil uygulama aslında bunun gibi servisleri gereğinden fazla kullanmakta. HTTP üzerinden yapılan en önemli çağrılar aslında POST ve GET‘tir. Bu istekler aslında iki ana kısımdan oluşur. Biri Header, diğeri ise Body kısmıdır. Header kısmında istek (request ) ile ilgili bilgiler bulunmaktadır. Bunların arasında hangi browser’i kullandığımız, hangi tür bilgilerin yer alacağı, uzak sunucunun host adresi, uzak sunucunun hangi tür verileri kabul edeceği gibi bilgiler bulunabilir. Body kısmında ise var olabilecek bilgiler bulunmaktadır. Örnek olsun diye POST metodunun içeriğine bir göz atacak olursak:
1 2 3 |
POST /test/demo_form.asp HTTP/1.1 Host: w3schools.com name1=value1&name2=value2 |
Yukarıdaki sadece bir örnektir. Aynı şekilde sunucuya bir JSON verisini de post edebilirdik. Bu aslında sizin hayal gücünüze kalmış. Biz örneğimizde bir JSON string’ini yolladığımızı varsayalım.
Controller’imiz içerisinde POST metodunu çağırmamız için Post isimli bir fonksiyonumuz oluyor ve üstüne POST için gerekli annotation’umuzu yazmamız gerekmekte. Fonksiyonun deklerasyonu konusuna birazdan değinmiş olacağız.
1 |
[System.Web.Http.HttpPost] |
Yukarıdaki annotation ile fonksiyonumuzun POST metodlarına yanıt vereceğini compiler’a anlatmış oluyoruz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
[System.Web.Http.HttpPost] //HttpRequestMessage objesi sayesinde gelen body bilgisini alabiliyoruz. public async Task<HttpResponseMessage> Post(HttpRequestMessage message) { try { // Gelen Mesajı Asenkron olarak string objesine yolluyoruz. string message3 = await message.Content.ReadAsStringAsync(); //Console.WriteLine(message3); //Özel Bir Model Oluşturuyoruz. CustomModel model2; // Newtonsoft ile Deserialize Ediyoruz. model2 = JsonConvert.DeserializeObject<CustomModel>(message3); //Başarılı işlem gerçekleşmişse HTTP 200 Response Gönderiyoruz (Başarılı) HttpResponseMessage Responsemessage = Request.CreateResponse(System.Net.HttpStatusCode.OK); return Responsemessage; } catch (Exception) { // Başasız ise Ona Göre HTTP Response Gönderiyoruz. HttpResponseMessage Responsemessage = Request.CreateResponse(System.Net.HttpStatusCode.NotAcceptable); return Responsemessage; } } |
Gerekli herşey bu kadar arkadaşlar. Gerekli açıklamalar kodların arasındaki yorumlarda gizli aslında. Umarım faydalı olmuştur 🙂
İyi Çalışmalar Dilerim 🙂