API Tanımı : WordPress HTTP API

API Tanımı : WordPress HTTP API

WordPress içine 2.7 ile birlikte gelen HTTP API çok marifetli ve işlevsel bir API. WordPress’in yazılarındaki anlatımına göre, eklenti yapımcılarının ihtiyaçları ve aslında WordPress çekirdeki takımının ihtiyacı üzerinde doğdu HTTP API. Böyle bir giriş yaptıktan sonra bu tanımın ve devamının biraz da eklenti yazan kişilere hitap ettiğini hatırlatmamda fayda var sanırım.

Ne ola ki bu HTTP API?

PHP içerisinde sitelerin, kodlar aracılığıyla birbiriyle etkileşimde bulunmasına olanak tanıyan birçok yol var. Ancak bazı barındırma hizmeti veren firmalar günvelik sebeplerinden dolayı bu yolları tamamiyle kapatabiliyorlar. Ya da sadece belli başlı etkileşim olanağı sağlıyorlar.

Bu durumda biz yazılımcıların ekstra Class, API, fonksiyon yazmamız gerekiyor. Tabii bu yazmakla da kalmıyor, bunu kullanıcının isteklerinie göre geliştirmemiz de gerekebiliyor. WordPress 2.7 sürümünden önce de durum tam olarak böyle olmuş. Eklenti geliştiricileri kendi kodlarını yazmak durumundalarmış ve bu çoğu zaman sıkıntıya sebep oluyormuş. Tabii yukarıda dediğim gibi çekirdek takım için de bu kötü geri dönüşler demek oluyormuş.

WordPress ekibi bu istekten yola çıkarak öncelikle bir standart koymak adına WordPress 2.7 içerisine HTTP API kodunu yerleştirmişler ve kullanıma sunmuşlar. Takip eden dönem içerisinde ise geir bildirimleri alıp WordPress 2.8 içerisinde HTTP API kodlarını genişletilebilir kılmışlar. Bu da çoğu eklenti kulanıcısının bu kodları rahatlıkla ihtiyacına göre düzenlemesi, geriye dönük destek kapasistesinin artmasını sağlamış.

Yani genel anlamda WordPress HTTP API bugün çoğu önbellek eklentisinin temel ve vazgeçilmez bir fonksiyonu haline geldi. Özellikle dosyaların header dediğimiz baş tanımlayıcılarını (last-modified gibi) öğrenmemize ve duruma göre olasılıklar oluşturmamızı sağlar.

HTTP API Yardımcı Fonksiyonları

HTTP API işini kolaylaştırmak ve kullanımı açısından geliştirici kitlesine anlaşılabilir olması için geliştirimiş olan fonksiyonlardır. Aşağıda ilk olarak size tanıtacağım dört adet fonksiyon sizlere herhangi bir URL hakkında bilgi getirir. Yanlarına açıklamalarını yazıyorum. Üstlerine tıklarsanız codex sayfalarına gitmiş olacaksınız.

Yukarıdaki kodlar herhangi bir hata ile karşılaşıldığında WP_Error classını kullanarak hata mesajı verirler. Bu fonksiyonları kullanırken hata sorgusu için bu classı kullanmanız faydalı olacaktır.

Diğer HTTP API yardımco fonksiyonları ise şunlar;

HTTP API aşağıdaki örnekte de görüleceği gibi yönlendirmeleri de destekler kapasitededir.

$theBody = wp_remote_retrieve_body( wp_remote_get('http://www.wordpress.org') );

Argümanlar

Bu fonksiyonları ya da genel anlamda HTTP API kodlarını kullanırken özelleştirmeniz gereken alanlar olabilir. Aşağıda tanımını ve nasıl kullanılmalıdır onları aktarıyorum.

  • method : POST, GET, HEAD, PUT ve diğer metodlar olmak üzere kullanılabilir. En güvenlilieri POST,GET,HEAD dır.
  • timeout : Sorgu yapılırken beklenecek cevap süresi (saniye bazında). Genelde 5 olarak kullanılır.
  • redirection : Sorgu bırakılmadan önce izlencek yönlendirme sayısı. Genelde 5 olarak kullanılır.
  • user-agent : Sorguyu yapan kullanıcı tanımı. Varsayılan değeri “WordPress/4.3; http://www.siteadresiniz.com” olarak belirlenmiştir. Buradaki 4.3 kullandığınız WordPress sürümüne göre değişkenlik gösterir.
  • blocking : Varsayılan değeri true olan bu ayar bloklanmayan istekleri tetiklemek için uygulanabilir, bu ayarı false yapmak PHP içinde devam eden detayları göstermez. Bu POST gönderimi yaparken iyidir.
  • compress : İstenen ve gelen datayı sıkıştırarak getirir.
  • decompress : Gelen herhangi sıkıştırılmış datayı çözümleyerek gösterir
  • sslverify : İstek alanında SSL sertifikasının aktifliğini kontrol eder.

Argümanlar Örnek Kullanım

$args = array(
    'method'      => 'GET' //HEAD,POST,PUT olabilir
    'timeout'     => 5,
    'redirection' => 5,
    'user-agent'  => 'WordPress/' . $wp_version . '; ' . get_bloginfo( 'url' ),
    'blocking'    => true,
    'compress'    => false,
    'decompress'  => true,
    'sslverify'   => true,
); 

Genel anlamda WordPress HTTP API kodlarını nasıl kullanabildiğinizi ve ne işe yaradıklarını anlatabildiğimi düşünüyorım :)

3 thoughts on “API Tanımı : WordPress HTTP API”

  1. Sizce bu apiyi curl kütüphanesinin alternatifi olarak kullanmak (özellikle performans açısından) mantıklı olur mu?

    1. Selim,

      Öncelike geç cevap verebildiğim için kusura bakma. Yoğunluğum had safhada. WordPress HTTP API cURL kütüphanesine kıyasla aslında şunu yapar. O an için isteği karşılamak adına en uygun ve en hızlı PHP olayını seçer. Yani GET ve POST için sunucu tarafından karışılanabilecek metodu seçer.

      Hem bazı durumlarda daha güvenli (dosya açma, getirme, döküm), hem de daha hızlı olabilir.

      cURL’e karşı HTTP API mantıklı görünmekte.

      1. Teşekkür ederim, ne kadar yoğun olduğunu tahmin edebiliyorum. #wwwkonusuyoruz serisinden az çok tanıdık sizleri :)

Comments are closed.