Restful Web Services nedir?
Restful Web Services , REST mimarisi üzerine inşa edilmiş hafif, bakımı yapılabilir ve ölçeklenebilir bir hizmettir. Dinlendirici Web Hizmeti, API'yi uygulamanızdan güvenli, tek tip, durumsuz bir şekilde arayan istemciye sunar. Çağıran istemci, Restful hizmetini kullanarak önceden tanımlanmış işlemleri gerçekleştirebilir. REST için temel protokol HTTP'dir. REST, Temsili Durum Transferi anlamına gelir.
Bu REST API eğitiminde şunları öğreneceksiniz:
- RESTful Anahtar Öğeler
- Dinlendirici Yöntemler
- Neden Dinlendirici
- Huzurlu Mimari
- RestFul İlkeleri ve Kısıtlamalar
- ASP.NET'te ilk Restful web hizmetinizi oluşturun
- İlk Restful web hizmetinizi çalıştırma
- İlk Restful web hizmetinizi test etme
RESTful Anahtar Öğeler
REST Web hizmetleri, başlangıcından bu yana gerçekten uzun bir yol kat etti. 2002 yılında, Web konsorsiyumu WSDL ve SOAP web hizmetlerinin tanımını yayınladı. Bu, web hizmetlerinin nasıl uygulandığının standardını oluşturdu.
2004 yılında, web konsorsiyumu ayrıca RESTful adlı ek bir standardın tanımını yayınladı. Geçtiğimiz birkaç yılda bu standart oldukça popüler hale geldi. Ve Facebook ve Twitter dahil olmak üzere dünyanın dört bir yanındaki popüler web sitelerinin çoğu tarafından kullanılıyor.
REST, belirli bir ortamda bulunan kaynaklara erişmenin bir yoludur. Örneğin, önemli belgeleri veya resimleri veya videoları barındıran bir sunucunuz olabilir. Bunların hepsi kaynakların bir örneğidir. Bir istemci, bir web tarayıcısının bu kaynaklardan herhangi birine ihtiyacı olduğunu söylerse, bu kaynaklara erişmek için sunucuya bir istek göndermesi gerekir. Şimdi REST hizmetleri, bu kaynaklara nasıl erişilebileceğinin bir yolunu tanımlıyor.
RESTful uygulamasının temel unsurları aşağıdaki gibidir:
-
Kaynaklar - İlk anahtar öğe, kaynağın kendisidir. Bir sunucudaki bir web uygulamasının birkaç çalışanın kayıtlarına sahip olduğunu varsayalım. Web uygulamasının URL'sinin http://demo.guru99.com olduğunu varsayalım . Artık REST hizmetleri aracılığıyla bir çalışan kayıt kaynağına erişmek için http://demo.guru99.com/employee/1 komutu verilebilir - Bu komut web sunucusuna, lütfen çalışan numarası olan çalışanın ayrıntılarını vermesini söyler. 1.
-
Talep Fiilleri - Bunlar, kaynakla ne yapmak istediğinizi açıklar. Bir tarayıcı, veri almak istediği uç noktaya talimat vermek için bir GET fiili yayınlar. Bununla birlikte, POST, PUT ve DELETE gibi birçok başka fiil mevcuttur. Dolayısıyla, http://demo.guru99.com/employee/1 örneğinde olduğu gibi, web tarayıcısı çalışan kaydının ayrıntılarını almak istediği için aslında bir GET Fiili yayınlamaktadır.
-
İstek Başlıkları - Bunlar, istekle birlikte gönderilen ek talimatlardır. Bunlar, gerekli yanıt türünü veya yetkilendirme ayrıntılarını tanımlayabilir.
-
Talep Gövdesi - Veriler taleple birlikte gönderilir. Veriler, normal olarak, REST web hizmetlerine bir POST isteği yapıldığında, istekte gönderilir. Bir POST çağrısında, istemci aslında REST web hizmetlerine sunucuya bir kaynak eklemek istediğini söyler. Bu nedenle, istek gövdesi, sunucuya eklenmesi gereken kaynağın ayrıntılarına sahip olacaktır.
-
Yanıt Bedeni - Bu, yanıtın ana gövdesidir. Dolayısıyla, RESTful API örneğimizde, web sunucusunu http://demo.guru99.com/employee/1 isteği aracılığıyla sorgulayacak olsaydık, web sunucusu, Yanıttaki çalışanın tüm ayrıntılarını içeren bir XML belgesi döndürebilirdi. Vücut.
-
Yanıt Durum kodları - Bu kodlar, web sunucusundan gelen yanıtla birlikte döndürülen genel kodlardır. Bir örnek, istemciye bir yanıt döndürülürken herhangi bir hata yoksa normalde döndürülen kod 200'dür.
Dinlendirici Yöntemler
Aşağıdaki diyagram çoğunlukla tüm fiilleri (POST, GET, PUT ve DELETE) ve ne anlama geldiklerine dair bir REST API örneğini göstermektedir.
Konumda tanımlanmış bir RESTful web servisimiz olduğunu varsayalım. http://demo.guru99.com/employee . İstemci bu web hizmetine herhangi bir istekte bulunduğunda, GET, POST, DELETE ve PUT'un normal HTTP fiillerinden herhangi birini belirtebilir. Müşteri tarafından ilgili fiiller gönderilmiş olsaydı ne olurdu aşağıdadır.
- POST - Bu, RESTful web hizmetini kullanarak yeni bir çalışan oluşturmak için kullanılır.
- GET - Bu, RESTful web hizmetini kullanan tüm çalışanların bir listesini almak için kullanılır.
- PUT - Bu, RESTful web hizmetini kullanan tüm çalışanı güncellemek için kullanılır.
- SİL - Bu, RESTful hizmetlerini kullanan tüm çalışanı silmek için kullanılır.
Tek bir kaydın perspektifinden bakalım. Çalışan sayısı 1 olan bir çalışan kaydı olduğunu varsayalım.
Aşağıdaki eylemlerin kendi anlamları olacaktır.
- POST - Zaten oluşturulmuş olan 1. çalışanın verilerini aldığımız için bu geçerli olmayacaktır.
- GET - Bu, RESTful web hizmetini kullanarak Çalışan numarası 1 olan çalışanın ayrıntılarını almak için kullanılır.
- PUT - Bu, RESTful web hizmetini kullanarak Çalışan numarası 1 olan çalışanın ayrıntılarını güncellemek için kullanılır.
- SİL - Bu, Çalışan numarası 1 olan çalışanın ayrıntılarını silmek için kullanılır.
Neden Dinlendirici
Dinlendirici çoğunlukla aşağıdaki nedenlerden dolayı popülerlik kazandı:
- Heterojen diller ve ortamlar - Bu, SOAP için de gördüğümüzle aynı olan temel nedenlerden biridir.
- Çeşitli programlama dilleri üzerine kurulu web uygulamalarının birbirleriyle iletişim kurmasını sağlar.
- Restful hizmetlerinin yardımıyla, bu web uygulamaları farklı ortamlarda bulunabilir, bazıları Windows'ta ve diğerleri Linux'ta olabilir.
Ama sonuçta, ortam ne olursa olsun, sonuç her zaman aynı olmalı ve birbirleriyle konuşabilmeli. Dinlendirici web hizmetleri, bu esnekliği, birbirleriyle konuşmak için çeşitli programlama dilleri ve platformları üzerine inşa edilmiş uygulamalara sunar.
Aşağıdaki resim, Facebook, Twitter ve Google gibi diğer uygulamalarla konuşma gereksinimi olan bir web uygulaması örneğini vermektedir.
Şimdi, bir istemci uygulamasının Facebook, Twitter vb. Sitelerle çalışması gerekiyorsa, muhtemelen Facebook, Google ve Twitter'ın hangi dilin üzerine inşa edildiğini ve hangi platform üzerine kurulduklarını bilmek zorunda kalacaklardı.
Buna dayanarak, web uygulamamız için arayüz kodu yazabiliriz, ancak bu bir kabus olabilir.
Facebook, Twitter ve Google, işlevlerini Restful web hizmetleri biçiminde ortaya koymaktadır. Bu, herhangi bir istemci uygulamasının bu web hizmetlerini REST aracılığıyla aramasına izin verir.
- Cihazlar olayı - Günümüzde, mobil cihaz, dizüstü bilgisayarlar ve hatta araba sistemleri olsun, her şeyin Mobil cihazlarda çalışması gerekiyor.
Normal web uygulamalarıyla konuşmak için bu cihazlardaki uygulamaları denemek ve kodlamak için harcanan çabayı hayal edebiliyor musunuz? Yine Restful API'ler bu işi daha basit hale getirebilir çünkü 1 numaralı noktada bahsedildiği gibi, cihaz için temel katmanın ne olduğunu gerçekten bilmenize gerek yoktur.
- Nihayet Bulut olayı - Her şey buluta taşınıyor. Uygulamalar yavaş yavaş Azure veya Amazon gibi bulut tabanlı sistemlere geçiyor. Azure ve Amazon, Restful mimarisine dayalı birçok API sağlar. Bu nedenle, uygulamaların artık Bulut ile uyumlu hale getirilecek şekilde geliştirilmesi gerekmektedir. Dolayısıyla, tüm Bulut tabanlı mimariler REST ilkesine göre çalıştığından, Bulut tabanlı hizmetlerden en iyi şekilde yararlanmak için web hizmetlerinin REST hizmetleri tabanlı mimari üzerinde programlanması daha mantıklıdır.
Huzurlu Mimari
RESTful veya REST tarzı olarak kabul edilen bir uygulama veya mimari aşağıdaki özelliklere sahiptir
- Durum ve işlevsellik dağıtılmış kaynaklara bölünmüştür - Bu, her kaynağa GET, POST, PUT veya DELETE'in normal HTTP komutları aracılığıyla erişilebilir olması gerektiği anlamına gelir. Bu nedenle, birisi bir sunucudan bir dosya almak isterse, GET talebini yayınlayabilmeli ve dosyayı alabilmelidir. Sunucuya bir dosya koymak isterlerse, POST veya PUT isteğini yayınlayabilmelidirler. Ve son olarak, sunucudan bir dosyayı silmek isterlerse, DELETE talebinde bulunurlar.
- Mimari istemci / sunucudur, durum bilgisizdir, katmanlıdır ve önbelleğe almayı destekler -
- İstemci-sunucu, sunucunun uygulamayı barındıran web sunucusu olabileceği ve istemcinin web tarayıcısı kadar basit olabileceği tipik mimaridir.
- Durumsuz, uygulamanın durumunun REST'te korunmadığı anlamına gelir.
Örneğin, DELETE komutunu kullanarak bir sunucudan bir kaynağı silerseniz, silme bilgisinin sonraki isteğe aktarılmasını bekleyemezsiniz.
Kaynağın silindiğinden emin olmak için GET talebini yayınlamanız gerekir. GET isteği, önce sunucudaki tüm kaynakları almak için kullanılacaktır. Bundan sonra kaynağın gerçekten silinip silinmediğini görmek gerekir.
RESTFul İlkeler ve Kısıtlamalar
REST mimarisi, aşağıda ayrıntılı olarak açıklanan birkaç özelliğe dayanmaktadır. Herhangi bir RESTful web servisinin RESTful olarak adlandırılabilmesi için aşağıdaki özelliklere uyması gerekir. Bu özellikler, RESTful tabanlı hizmetlerle çalışırken izlenmesi gereken tasarım ilkeleri olarak da bilinir.
- RESTFul İstemci-Sunucu
Bu, REST tabanlı bir mimarinin en temel gereksinimidir. Bu, sunucunun istemciye gerekli işlevselliği sağlayacak bir RESTful web hizmetine sahip olacağı anlamına gelir. İstemci, sunucudaki web hizmetine bir istek gönderir. Sunucu, talebi reddeder veya kabul eder ve istemciye yeterli bir yanıt verir.
- Vatansız
Vatansız kavramı, gerekli tüm bilgilerin sunucuya sağlandığından emin olmanın istemciye bağlı olduğu anlamına gelir. Bu, sunucunun yanıtı uygun şekilde işleyebilmesi için gereklidir. Sunucu, istemciden gelen talepler arasında herhangi bir bilgi tutmamalıdır. Çok basit, bağımsız bir soru-cevap dizisi. İstemci bir soru sorar, sunucu buna uygun şekilde cevap verir. Müşteri başka bir soru soracaktır. Sunucu, önceki soru-cevap senaryosunu hatırlamayacak ve yeni soruyu bağımsız olarak cevaplaması gerekecektir.
- Önbellek
Önbellek kavramı, son noktada açıklanan vatansız sorununa yardımcı olmaktır. Her sunucu istemcisi isteği doğası gereği bağımsız olduğundan, bazen istemci sunucudan aynı isteği tekrar isteyebilir. Bu, geçmişte zaten istemiş olmasına rağmen. Bu istek sunucuya gidecek ve sunucu bir yanıt verecektir. Bu, ağ üzerindeki trafiği artırır. Önbellek, sunucuya zaten gönderilmiş olan istekleri depolamak için istemcide uygulanan bir kavramdır. Yani aynı istek istemci tarafından sunucuya gitmek yerine verilirse önbelleğe gider ve gerekli bilgileri alır. Bu, istemciden sunucuya giden ağ trafiği miktarını kaydeder.
- Katmanlı Sistem
Katmanlı sistem kavramı, istemci ile RESTFul web hizmetini barındıran gerçek sunucu arasına bir ara katman katmanı gibi herhangi bir ek katmanın eklenebilmesidir (Ara katman katmanı, tüm iş mantığının oluşturulduğu yerdir. Bu ek bir hizmet olabilir. müşterinin web hizmetine çağrı yapmadan önce etkileşim kurabileceği şekilde oluşturulur.). Ancak bu katmanın tanıtımı, istemci ile sunucu arasındaki etkileşimi bozmaması için şeffaf olmalıdır.
- Arayüz / Tekdüzen Sözleşme
RESTful web servislerinin nasıl çalışması gerektiğinin altında yatan teknik budur. RESTful, temel olarak HTTP web katmanında çalışır ve sunucudaki kaynaklarla çalışmak için aşağıdaki anahtar fiilleri kullanır.
- POST - Sunucuda bir kaynak oluşturmak için
- GET - Sunucudan bir kaynak almak için
- PUT - Bir kaynağın durumunu değiştirmek veya güncellemek için
- SİL - Sunucudan bir kaynağı kaldırmak veya silmek için
ASP.NET'te ilk Restful web hizmetinizi oluşturun
Şimdi bu REST API öğreticisinde, ASP.NET'te Restful web hizmetinin nasıl oluşturulacağını öğreneceğiz:
Web hizmetleri çeşitli dillerde oluşturulabilir. Birçok entegre geliştirme ortamı, REST tabanlı hizmetler oluşturmak için kullanılabilir.
Bu RESTful API örneğinde, Visual Studio kullanarak .Net'te REST uygulamamızı oluşturacağız. Örneğimizde, Restful web servisleri için aşağıdaki REST servis örneğini taklit edeceğiz.
Aşağıdaki veri seti üzerinde çalışacak bir Restful web servisimiz olacak.
Aşağıdaki veri kümesi, Eğitim Kimliğine dayalı olarak sahip oldukları Eğiticiyi ifşa eden bir şirkete sahip olan bir REST API örneğini temsil etmektedir.
Eğitim kimliği | EğitimAdı |
0 | Diziler |
1 | Kuyruklar |
2 | Yığınlar |
REST API öğretici örneğimizde, aşağıdaki Restful Fiilleri uygulayacağız.
- GET Tutorial - Bir istemci bu Restful API'yi çağırdığında, web hizmetinde mevcut olan tüm Eğitimler verilecektir.
- GET Tutorial / Tutorialid - Bir istemci bu Restful API'yi çağırdığında, istemci tarafından gönderilen Tutorialid temel alınarak kendisine Tutorial adı verilir.
- POST Eğitimi / Eğitim Adı - Bir istemci bu Restful API'yi çağırdığında, istemci bir Eğitim adı eklemek için bir istek gönderecektir. Web hizmeti daha sonra gönderilen Eğitici adını koleksiyona ekleyecektir.
- DELETE Tutorial / Tutorialid- Bir istemci bu Restful API'yi çağırdığında, istemci Tutorialid'e göre bir Tutorial adını silmek için bir istek gönderecektir. Web hizmeti daha sonra gönderilen Eğitim adını koleksiyondan silecektir.
Yukarıdaki uygulamayı gerçekleştiren ilk RESTful web hizmetlerimizi oluşturmak için bu RESTful API eğitiminde aşağıdaki adımları takip edelim.
Adım 1) İlk adım, boş bir Asp.Net Web uygulaması oluşturmaktır. Visual Studio 2013'ten Dosya-> Yeni proje menü seçeneğine tıklayın.
Yeni Proje seçeneğine tıkladığınızda, Visual Studio size proje türünü seçmeniz ve projenin gerekli ayrıntılarını vermeniz için başka bir iletişim kutusu verecektir. Bu, bu RESTful API eğiticisinin bir sonraki adımında açıklanmaktadır
Adım 2) Bu adımda,
- İlk olarak ASP.NET Web uygulamasının RESTful web hizmetleri C # web şablonunu seçtiğinizden emin olun. Web hizmetleri projesi oluşturabilmek için projenin bu tipte olması gerekir. Bu seçenekleri seçerek, Visual Studio herhangi bir web tabanlı uygulama için gerekli olan gerekli dosyaları eklemek için gerekli adımları gerçekleştirir.
- Bizim durumumuzda "Webservice.REST" olarak verilen projenize bir isim verin.
- Ardından, proje dosyalarının saklanacağı bir konum verdiğinizden emin olun.
Tamamlandığında, Visual Studio 2013'te çözüm gezgininizde oluşturulan proje dosyasını göreceksiniz.
Adım 3) Sonraki adım, RESTful web servisine sahip olacak web servis dosyasını oluşturmaktır.
- İlk olarak aşağıda gösterildiği gibi proje dosyasına sağ tıklayın
- Bu adımda,
- Proje dosyasına sağ tıklayın
- "Ekle-> yeni öğe" seçeneğini seçin.
Görünen iletişim kutusunda, aşağıdakileri yapmanız gerekir
- WCF Hizmeti seçeneğini seçin (Ajax etkin) - Bu türden bir dosya seçin, Visual stüdyonun RESTful web hizmeti oluşturmasına yardımcı olan bazı temel kodlar eklemesine neden olur. WCF, Windows Communication Foundation'ın kısaltmasıdır. WCF, TCP, HTTP, HTTPS gibi çeşitli protokoller üzerinden iletişim kurmak için çeşitli platformlardaki veya aynı platformdaki uygulamalar için bir kitaplıktır. Ajax temelde Eşzamansız JavaScript ve XML'dir. AJAX, perde arkasında sunucu ile küçük miktarlarda veri alışverişi yaparak web sayfalarının eşzamansız olarak güncellenmesine izin verir.
- Sonra bizim durumumuzda TutorialService olan hizmet için bir isim verin.
- Son olarak, hizmeti çözüme eklemek için Ekle düğmesine tıklayın.
Adım 4) Bir sonraki adım, bu projenin RESTful web hizmetleriyle çalışmayı tamamlamasını sağlamak için bir yapılandırma değişikliği yapmaktır. Bu, Web.config adlı dosyada bir değişiklik yapılmasını gerektirir . Bu dosya, Webservice proje dosyasıyla aynı pencerede görünür. Web.config dosyası, web uygulamasının olması gerektiği gibi çalışmasını sağlayan tüm yapılandırmaları içerir. Yapılan değişiklik aslında uygulamanın saf bir RESTful web hizmeti olarak veri gönderip almasına izin veriyor.
- Kodu açmak için Web.config dosyasına tıklayın
satırını bulun
- Satırı
olarak değiştirin
Adım 5) Bu RESTful API öğreticisindeki bir sonraki adım, kodumuzu uygulama için eklemektir. Aşağıda belirtilen kodun tamamı TutorialService.svc dosyasına yazılmalıdır.
- İlk bit, programımızda kullanılacak verilerimizi temsil edecek kod eklemektir. Böylece, "Diziler", "Kuyruklar" ve "Yığınlar" değerlerine sahip bir dizi değişkenleri listesine sahip olacağız. Bu, barındırma web hizmetimiz aracılığıyla sunulan eğitimlerin adını temsil edecektir.
namespace Webservice.REST{[ServiceContract(Namespace = "")][AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowedpublic class TutorialService{private static Listlst = new List (new String[] {"Arrays","Queues","Stacks"});
Adım 6) Daha sonra GET yöntemimizin kodunu tanımlayacağız. Bu kod, aynı TutorialService.svc dosyasında da yer alacaktır. Bu kod, hizmeti tarayıcımızdan her aradığımızda çalışacaktır.
Aşağıda belirtilen senaryoyu yerine getirmek için aşağıdaki yöntem kullanılacaktır.
- Bir kullanıcı mevcut tüm Öğreticilerin bir listesini istiyorsa, bunu başarmak için aşağıdaki kodun yazılması gerekir.
[WebGet(UriTemplate="/Tutorial")]public String GetAllTutorial(){int count = 1st.Count;String TutorialList = "";for (int i = 0; i < count; i++)TutorialList = TutorialList + lst[i] + ",";return TutorialList;}
Kod Açıklaması: -
- İlk kod satırı en önemlisidir. Bu yöntemi bir URL aracılığıyla nasıl çağırabileceğimizi tanımlamak için kullanılır. Dolayısıyla, web hizmetimize bağlantı http: // localhost: 52645 / TutorialService.svc ise ve '/ Tutorial' kısmını http: // localhost: 52645 / TutorialService.svc / Tutorial olarak URL'ye eklersek , yukarıdaki kod çağrılacak. 'WebGet' özniteliği, bu yöntemin GET fiili aracılığıyla çağrılabilmesi için bir RESTful yöntem olmasına izin veren bir parametredir.
- Bu kod bölümü, 'lst' değişkenindeki dizeler listemizde gezinmek ve hepsini çağıran programa döndürmek için kullanılır.
Adım 7) Aşağıdaki kod, Eğitim Hizmetine bir Eğitim kimliği ile bir GET çağrısı yapılırsa, Öğretici kimliğine göre ilgili Eğitim Adını döndüreceğini garanti eder.
[WebGet (UriTemplate = "/Tutorial/{Tutorialid}")]public String GetTutorialbyID(String Tutorialid){int pid;Int32.TryParse(Tutorialid, out pid);return lst[pid];}
Kod Açıklaması: -
- İlk kod satırı en önemlisidir. Bu yöntemi bir URL aracılığıyla nasıl çağırabileceğimizi tanımlamak için kullanılır. Dolayısıyla, web hizmetimizin bağlantısı http: // localhost: 52645 / TutorialService.svc ise ve '/ Tutorial / {Tutorialid}' adresini URL'ye eklersek, web hizmetini http: //localhost:52645/TutorialService.svc/Tutorial/1 örnek olarak. Web hizmetinin daha sonra Öğretici kimliği # 1 olan Öğretici adını döndürmesi gerekecektir.
- Bu kod bölümü, web yöntemine geçirilen Eğitim kimliğine sahip "Eğitim adını" döndürmek için kullanılır.
- Varsayılan olarak, hatırlanması gereken şey, tarayıcıda URL'ye iletilen her şeyin bir dizedir.
- Ancak, listemizdeki Dizinin bir tamsayı olması gerektiğini hatırlamanız gerekir, bu nedenle önce Eğitim Kimliğini bir Tamsayıya dönüştürmek için gerekli kodu ekliyoruz ve sonra onu listemizdeki dizin konumuna erişmek için kullanıyoruz ve
- Ardından değeri uygun şekilde çağıran programa geri döndürün.
Adım 8) Sonraki adım, POST yöntemimizin kodunu yazmaktır. Bu yöntem, POST yöntemi aracılığıyla Öğreticiler listemize bir dize değeri eklemek istediğimizde çağrılacaktır. Örneğin, "Yazılım Testi" Öğretici adını eklemek istiyorsanız, POST yöntemini kullanmanız gerekir.
Kod Açıklaması: -
- İlk satır, yöntemimize eklenen 'WebInvoke' özniteliğidir. Bu, yöntemin POST çağrısı yoluyla çağrılmasına izin verir. RESTFul web hizmetine değer gönderirken, değerlerin bu biçimde olması gerektiğinden, RequestFormat ve ResponseFormat özniteliğinden JSON olarak bahsedilmelidir.
- İkinci kod satırı, POST çağrısı aracılığıyla iletilen dize değerini mevcut Öğretici dizeler listemize eklemek için kullanılır.
Adım 9) Son olarak DELETE işlemini işlemek için yöntemimizi ekleyeceğiz. Bu yöntem, DELETE yöntemi aracılığıyla Öğreticiler listemizden var olan bir dize değerini silmek istediğimizde çağrılacaktır.
[WebInvoke(Method = "DELETE", RequestFormat = WebMessageFormat.Ison,UriTemplate = "/Tutorial/{Tutorialid}", ResponseFormat = WebMessageFormat.Json,BodyStyle = WebMessageBodyStyle.Wrapped)]public void DeleteTutorial(String Tutorialid){int pid;Int32.TryParse(Tutorialid, out pid);1st.RemoveAt(pid);}
Kod Açıklaması: -
- İlk satır, yöntemimize eklenen 'WebInvoke' özniteliğidir. Bu, yöntemin POST çağrısı yoluyla çağrılmasına izin verir. RESTFul web hizmetine değer gönderirken, değerlerin bu biçimde olması gerektiğinden, RequestFormat ve ResponseFormat özniteliğinden JSON olarak bahsedilmelidir. Yöntem parametresinin "SİL" olarak ayarlandığını unutmayın. Bu, DELETE fiilini her kullandığımızda, bu yöntemin çağrılacağı anlamına gelir.
- İkinci kod satırı, DELETE çağrısı yoluyla gönderilen Eğitim Kimliğini almak ve ardından bu kimliği listemizden silmek için kullanılır. ( Koddaki Int32 işlevi, Eğitim Kimliğini bir dize değişkeninden bir tam sayıya dönüştürmek için kullanılır).
İlk Restful web hizmetinizi çalıştırma
Artık tüm web hizmetimizi yukarıdaki bölümde oluşturduk. Herhangi bir istemciden çağrılabilmesi için Eğitim hizmetini nasıl çalıştırabileceğimizi görelim.
Web hizmetini çalıştırmak için lütfen aşağıdaki adımları izleyin
Adım 1) Proje dosyasına sağ tıklayın - Webservice.REST
Adım 2) 'Başlangıç Projesi Olarak Ayarla' menü seçeneğini seçin. Bu, Visual Studio tüm çözümü çalıştırdığında bu projenin çalıştırılmasını sağlar
Adım 3) Sonraki adım, projenin kendisini çalıştırmaktır. Artık sistemde yüklü olan varsayılan tarayıcıya bağlı olarak, uygun tarayıcı adı Visual Studio'daki çalıştır düğmesinin yanında gelecektir. Bizim durumumuzda, Google Chrome görünüyor. Bu düğmeye tıklamanız yeterlidir.
Çıktı:-
Proje çalıştırıldığında, TutorialService.svc / Tutorial bölümünüze göz atabilir ve aşağıdaki çıktıyı elde edersiniz.
Yukarıdaki çıktıda,
- Tarayıcının 'GET' fiilini çağırdığını ve web hizmetinde 'GetAllTutorial' yöntemini çalıştırdığını görebilirsiniz. Bu modül, web hizmetimiz tarafından sunulan tüm Öğreticileri görüntülemek için kullanılır.
İlk Restful web hizmetinizi test etme
Yukarıdaki bölümde, tarayıcının 'GET' fiilini çalıştırmak ve 'GetAllTutorial'ı çağırmak için nasıl kullanılacağını zaten görmüştük.
- Şimdi aşağıdaki kullanım senaryosunu yürütmek için tarayıcıyı kullanalım.
GET Tutorial / Tutorialid - Bir istemci bu Restful API'yi çağırdığında, istemci tarafından gönderilen Tutorialid'e göre kendisine Tutorial adı verilecektir.
Tarayıcınızda, URL'deki Eğitim kelimesinin arkasına / 1 dizesini ekleyin. Enter düğmesine basarsanız, aşağıdaki çıktıyı alırsınız
Şimdi, Öğretici Dizeler listemizde aslında 1 numaraya karşılık gelen Kuyrukların çıktısını göreceksiniz. Bu, 'GetTutorialbyID' yönteminin artık Web Hizmetimizden çağrıldığı anlamına gelir. Ayrıca, 1 değerinin tarayıcı aracılığıyla web hizmetimize ve yöntemimize başarıyla geçtiğini ve bu nedenle tarayıcıda "Kuyruklar" ın doğru karşılık gelen değerini elde ettiğimizi gösterir.
- Ardından aşağıdaki senaryoyu yürüterek web servisimizi tüketelim. Bunun için siteden ücretsiz olarak indirilebilen "Fiddler" adlı aracı kurmanız gerekiyor.
POST Eğitimi / Eğitim Adı - Bir istemci bu Restful API'yi çağırdığında, istemci bir Eğitim adı eklemek için bir istek gönderecektir. Web hizmeti daha sonra gönderilen Eğitici adını koleksiyona ekleyecektir.
Filddler aracını çalıştırın ve aşağıdaki adımları uygulayın;
- Besteci bölümüne gidin. Bu, herhangi bir web'e gönderilebilecek istekler oluşturmak için kullanılır
uygulama.
- İstek türünün "POST" olduğundan ve doğru URL'nin vurulduğundan emin olun, bu bizim durumumuzda http: // localhost: 52645 / TutorialService.svc / Tutorial olmalıdır
- Content-Type'ın application / json olarak işaretlendiğinden emin olun. Web hizmetimizdeki POST istek yöntemimizin yalnızca json tarzı verileri kabul ettiğini, bu nedenle uygulamamıza bir istek gönderirken bunun belirtildiğinden emin olmamız gerektiğini unutmayın.
- Son olarak, verilerimizi girmemiz gerekiyor. POST yöntemimizin 'str' adlı bir parametreyi kabul ettiğini unutmayın. Bu yüzden burada, Eğitim adları koleksiyonumuza "Ağaçlar" adlı bir değer eklemek ve str değişken adına etiketlendiğinden emin olmak istediğimizi belirtiyoruz.
Son olarak, kemancıda Yürüt düğmesini tıklamanız yeterlidir. Bu, web hizmetimize "Ağaçlar" verilerini web hizmetimize POST olarak göndermek için bir istek gönderecektir.
Şimdi, Eğitim listemizdeki tüm dizeleri göstermek için Eğitim URL'sine göz attığımızda, artık "Ağaçlar" değerinin de mevcut olduğunu göreceksiniz. Bu, web hizmetine yönelik POST isteğinin başarıyla yürütüldüğünü ve Eğitim Listemize başarıyla eklendiğini gösterir.
- Ardından aşağıdaki senaryoyu yürüterek web servisimizi tüketelim. Bunun için de kemancı aracını kullanmamız gerekiyor
DELETE Tutorial / Tutorialid- Bir istemci bu Restful API'yi çağırdığında, istemci Tutorialid'e göre bir Tutorial adını silmek için bir istek gönderecektir. Web hizmeti daha sonra gönderilen Eğitim adını koleksiyondan silecektir.
Filddler aracını çalıştırın ve aşağıdaki adımları uygulayın
- Besteci bölümüne gidin. Bu, herhangi bir web'e gönderilebilecek istekler oluşturmak için kullanılır
uygulama.
- İstek türünün "SİL" olduğundan ve doğru URL'nin vurulduğundan emin olun, bizim durumumuzda http: // localhost: 52645 / TutorialService.svc / Tutorial olmalıdır . Parametre olarak URL aracılığıyla gönderilen listedeki bir dizeyi silmek için kullanılan kimliğin olduğundan emin olun. REST örneğimizde 1 gönderiyoruz, bu nedenle bu koleksiyonumuzdaki 2. element olan "Kuyruklar" ı silecektir .
Son olarak, kemancıda Yürüt düğmesini tıklamanız yeterlidir. Bu, web hizmetimize veri "Kuyruklarını" web hizmetimize SİLMESİ için bir istek gönderecektir.
Şimdi, Eğitim listemizdeki tüm dizeleri göstermek için Eğitim URL'sine göz attığımızda, "Kuyruklar" değerinin artık mevcut olmadığını fark edeceksiniz.
Bu, web hizmetine yönelik DELETE isteğinin başarıyla yürütüldüğünü gösterir. Öğretici dizeler listemizdeki 1 numaralı dizinteki öğe başarıyla silindi.
Özet
- REST, Temsili Durum Transferi anlamına gelir. REST, doğası gereği hafif, bakımı yapılabilir ve ölçeklenebilir web hizmetleri oluşturmak için kullanılır.
- Giderek daha fazla uygulama Restful mimarisine taşınıyor. Bunun nedeni, artık mobil cihazları kullanan çok sayıda insan ve buluta taşınan çok çeşitli uygulamalar olmasıdır.
- REST'in ana yönleri, sunucuda bulunan kaynaklar ve bu kaynaklarla çalışmak için kullanılabilen GET, POST, PUT ve DELETE fiilleridir.
- Restful web servisleri oluşturmak için Visual Studio ve.Net kullanılabilir.
- POST ve PUT için web hizmetlerini test ederken, sunucuya POST ve PUT isteğini göndermek için kullanılabilecek fiddler adlı başka bir araç kullanmanız gerekir.