Soap mı Rest ?

Web Servis Yazılımı Soap ve Soap olmadan{ PHP } | Emre Karataşoğlu

Bu yazıda php’de soap  kullanımının  avantajı ve bazı durumlarda gereksizliğini anlatmaya çalışıcağım .Soap xml tabanlı bir erişim protokolü .

Nerelerde kullanılıyor derseniz , haber sitelerinin farklı yerlerden verileri çekmesinde , alış veriş sitelerinin {en ucuzu com , gitti sattım gidiyor } gibi sistemler farklı platformlardan {teknosa gibi} ürünleri .wsdl formatında çekip sistemlerinde parse ediyorlar . Platform bağımsız oluşu artılarından , ancak kullancağınız dile göre sistemin kodlanması configi verilere ulaşımı sıkıntı . Benzer şekilde platform bağımsız php ile web servis yazmak aslında çok kolay
Tanımlanan fonksiyonları call etmek , verileri bunlara göre döndürmek bir yöntem fakat zahmetli bir iş .

Bunun yerine facebook Twitter wordpress gibi sistemler xml ya da json array göndermeyi tercih ediyorlar neden ?

Farklı farklı fonksiyonları call etmek zorunda değilsiniz query string’e göre verileri değiştirebilirsiniz , örneğin emrekaratasoglu.com/mydataService.php?getCategory=5&limit=5&orderBy=name&type=ASC. Ben bunu nasıl yapabilceğimizi anlatmak istiyorum .

Soap ile ilgili birçok kaynak mevcut bu tarz webservis daha hızlı pratik bir çözüm sunabiliyor bize .

Bu kısımda yapmamız gereken servis sayfamızın hangi parametleri beklediğini dökümente edip paylaşmak .  Anlatıcağım kısım php için ama benzer sistemi .net ile de yapabilirsiniz.

Ürünlerimin ve ürünlerin kategorilerinin olduğu aynı zamanda bunların fiyatlarının ve stok bilgilerinin olduğu tabloların oluşturduğu bir veritabanım var oldugunu varsayalım .

bu durumda ,

normal query’im

select urunler.* , urunCategory.categoryName , urunFiyat.fiyat from

urunlerTable urunler inner join urunCategoryTable  urunCategory on urunCategory.categoryId = urunler.categoryId inner join urunFiyatTable urunFiyat on urunFiyat.urunId = urunler.Id

eğer query stringimdeki
category_id , urun_id  , limit gibi parametreler boş gelirse direk bu sorgunun sonucu döner {

<? 
$categoryId= isset($_REQUEST["category_id"]) ? $_REQUEST["category_id"] : "";
?>

}

boş değilse

sorguma sadece where  urunCategory.categoryId= $categoryId
diyerek ya da limit order by gibi parametreler için bu tarz $addSql değişkenleri oluşturulabilir .

Geriye sonucu döndürmek kalıyor .
Bu kısımda da 2 alternatif sunabilriz.

1. Xml

2.Json

Xml için datayı foreachle döndürüp

<myRoot>

  <category id=''>

<urun id=></urun>

</categoryId=''>

</myRoot>

tarzında bir xml döndürebiliriz.

ya da

return json_encode($returningArray)

diyebilriz.

Web Servis için yazıcağımız dökümanda

parametreler ve

verilere nasıl erişilceğini de yazdığımızda web servisimiz tamamlanmış olacaktır .

Php kısmında veriye erişim için

xml için simplexml_load_file fonksiyonu

json için json_decode(file_get_contents($url))

fonksiyonu işi görücektir. Örnek bir uygulamayı veritabanı + kod + örnek isteklerle beraber ekli dosyada php web servisi paylaştım.

 

 

 

Leave a Comment

Your email address will not be published. Required fields are marked *