Android Web Servis (Rest, WCF veya ASMX) – Deep Learning Engineer

Android Web Servis (Rest, WCF veya ASMX)

Örnek kodlar: https://github.com/bulentsiyah/Android-WebServis–RestWCFveyaASMX

Web Servisler, temelde HTTP protokolünü kullanarak, platformdan bağımsız metodlar ile ortak veri formatında veri alış verişinin yapılmasını sağlayan yapılardır. REST ve SOAP; Web Servis teknolojilerinde günümüzde çok tercih edilen veri iletişim protokolleri, yöntemleri arasında yer alır.

Teorik olarak SOAP bir protokol, REST ise bir kurallar dizisidir. Bu iki terimi doğrudan kıyaslamak biraz yanlış olsa da, SOAP ile geliştirilen bir uygulama ile REST ile geliştirilen bir uygulamayı kıyaslamanın REST’in daha iyi anlaşılmasını sağlamak için uygun bir yol olacaktır.

SOAP servisleri RPC(Remote Process Call yani uzaktaki bir prosedürün çağrılması) çalışma yöntemini kullanır, WS-* gibi güvenlik protokollerini içerisinde barındırır, state bilgisini request ve response’larda saklar. Ancak REST’te bu durum daha farklıdır. REST servisler doğrudan bir URL çağrılarak çalışır, arada ek bir bileşen, yöntem veya protokol kullanılmaz.

SOAP bir servisi uygulamanıza dahil edebilmeniz için servisin WSDL’ına ihtiyaç duyarsınız, proxy sınıfları oluşturmanız gerekir, uzaktaki metotları tetikleyecek bileşenlere ihtiyaç vardır. DISCO, UDDI vs. derken aslında işin arka planında bayağı detay olduğunu görürsünüz. Yani özet olarak istemci, SOAP bir servisle ilgili herşeyi bilmek zorundadır, belirli standartları yerine getirilmeden SOAP bir servisi çağıramaz. Ancak REST ile yazılmış bir servisle çalışmak için ihtiyacınız olan tek şey URL. Bir URL’yi çağırırsınız, URL size JSON veya XML döndürür, dönen cevabı parse edersiniz ve servis entegrasyonunuz tamamlanır. Yani teorik olarak istemci uygulama REST bir servisin yapısını ve detaylarını bilmek zorunda değildir. REST’in bu basit standartları dışında uyulması gereken bir kural yoktur, son derece esnek bir yapı vardır.

Basit yapısı, kolay uygulanması, hızlı çalışması, esnek olması… bunlar RESTful servislerin artı yönleri. RESTful servislerinin bazı eksi yönleri de var tabii ki. Güvenlik bunlardan biri. SOAP servislerde standart lar gereği birçok güvenlik mekanizması otomatik olarak elinizin altındadır. Ancak RESTful servislerde güvenlik konuları geliştirilen yazılımın bir parçasıdır. İletişim seviyesinde güvenlik(transport level security) genellikle token aracılığıyla yapılır. İstemci kritik işlemleri çağırmadan önce bir login isteği gönderir. Bu istek sonucunda istemciye sessin token vb. bir değer verilir ve bundan sonra yapacağı istekler bu token değeri ile yapılır.

Asmx SOAP ve Http kullanarak mesajlaşabilirken, WCF default olarak Http olmasıyla birlitke TCP/IP, MSMQ, NamedPipes etc. gibi yapıları da kullanabilmektedir.

REST tabanlı web servislerde HTTP metodlarına özel anlamlar yüklenir ve böylece web servise bir HTTP isteği geldiği anda metod çalıştırılmış olur.

GET: Adresi verilen nesneyi döndürmek için kullanılır.
PUT: Var olan bir nesneyi değiştirmek için veya eğer yoksa yeni bir tane oluşturmak için kullanılır.
POST: Yeni bir nesne oluşturmak için kullanılır. Her seferinde yeni bir nesne oluşturur.
DELETE: Adresi verilen nesneyi silmek için kullanılır.
REST Requesti Sonucu, Çoğunlukla Dönen HTTP Status Kodları:
200 OK: Genelde veri listeleme sonuçları 200 ile dönüş yapılır.
201 CREATED: Veri eklendiği zaman verinin kendisi ile 201 dönülür.
204 NO CONTENT: Veri silindiği zaman 204 dönülür.

400 BAD REQUEST: Genel olarak kayıt ekleme ya da güncelleme isteklerinde gönderilen veri validasyondan geçemediyse neden geçemediği hakkında bilgiyle beraber 400 HTTP Statusuyla dönülür.
403 Forbidden: Yetkiye dayalı bir işlem yapılıyorsa bu API uç noktasında işlem yapmaya çalışan kişinin bu işlemi yapmaya yetkisi yoksa 403 status kodu döner.
401 Unauthorized: Api ucunuzda bu işlemi yapmak için login olmak zorunlu ise ve API’ye istek yapan kullanıcı login değilse bu HTTP Status ile cevap verilir.
404 Not Found: Bu HTTP Status, kullanıcının istek yaptığı URL yok ise ya da URL deki veri geçersiz ise bu hatayı alırız.
405 Method Not Allowed: Bu HTTP Statusu istek yapılan API uç noktası gönderilen metodu implemente etmemiş ise bu HTTP Statusunu alırız. Örneğin login olması için token verdiğimiz bir API ucumuz var ve bu uçta sadece POST isteğini kabul ediyor. Kullanıcı bu API URL’ine GET isteği yaparsa 405 statusu döner.
429 Too Many Requests: Bu HTTP Statusunu, saatlik ya da dakikalık kısıtlanan sınırdan fazla istek yapıldığında alırız.

Gruplanmış Bakış Açısıyla HTTP Statusları;
Bilgilendirme – 1xx
Başarılı İşlem – 2xx
Yönlendirmek – 3xx
Kullanıcı Taraflı hata – 4xx
Server Taraflı hata – 5xx Şeklinde ifade edebiliriz.

Kaynaklar: http://yazilimgelistirmeyontemleri.blogspot.com.tr/2015/06/rest-nedir-soap-ile-arasndaki-farklar.html
http://devnot.com/2016/rest-mimarisi-ve-restful-servisler/
WCF (Windows Communication Foundation),
SOAP (Simple Obect Access Protocol),
REST (Representational State Transfer),
JSON (JavaScript-Object-Notation)

Örnek kodlarda wcf veya restful web servislerden örnek veri sorgulama, listeleme ile resim upload ve kaydetme methodları eklenmiştir.

Bu slayt gösterisi için JavaScript gerekir.

 

Bulent SIYAH | 08 Ağustos 2016