Selamlar, kendi uygulamanızı ve web servisinizi yazmak istediğinizde imdadınıza yetişecek yazımda sizlere en basit şekilde PHP ile REST API yazmayı anlatacağım.
Github’ta incelemek için tıklayın!
İhtiyaçlarımız:
- PHP versiyonu önemli değil 🙂
- Herhangi bir veritabanı, SQLite, MySQL, MSSQL, MongoDB vs.
- Notepad++, SublimeText veya benzeri basic editör.
- PHP çalıştırabileceğiniz bir ortam. Ben kendi sunucumda CyberPanel kullanıyorum, lokalde çalışmak ,isterseniz Xamp, Wamp, AppServ vs. kullanabilirsiniz. Linux kullanıcısıysanız blogumda Linux için kurulumu var.
Hadi Başlayalım: Veritabanımız
SQLite veritabanı kullanmayı tercih ediyorum. Kesinlikle veritabanı farketmez burada. Kolaylık olması açısından seçiyorum. Github’a attığımda içeri dışarı aktar problemi olmaması açısından.
DB Browser For SQLite uygulaması ile yeni veritabanı oluşturalım.
Oluşturur oluşturmaz tablo ekranı gelecek. Burada kullanacağımız bir tablo oluşturalım. id, isim, soyisim,yas ve cinsiyet koydum. id ve yas numeric diğerleri text olarak.
İçerisine 5 tane veri girdim. Veriyi görüntüle kısmından verileri düzenleyemeye girebilir kırmızı ok ile gösterdiğim alandan yeni veri giriş alanı açabilirsiniz.
Değişikleri kaydet diyip veritabanımızla işimizi tamamlayalım.
Hadi yazalım: PHP İşlemleri
PHP çalışan bir sistem kurduğunuzu düşünerek devam ediyorum 🙂 veritabanimiz.db dosyamızın olduğu dizine yeni bir PHP dosyası oluşturalım. İsmine veri_cek.php koydum. Ve dosyamızı düzenleyelim.
Öncelikle <?php ?> taglarımızın içerisine sırasıyla şu işlemleri yapalım.
- Header’a content-type application/json ekleyelim. Eklemesekte olur, ancak bazı tarayıcıların iyi anlaması için kullanabilirsiniz.
- Veritabanımızı okuyalım.
- Json_encode etmek için yeni dizi oluşturalım.
- indis sayacı oluşturalım.
- Verilerimizi çekelim.
- Satır satır okuyalım: Okuduklarımızın içerisindeki verileri jsonDizimize ekleyelim ve indis sayacı arttıralım.
- Ekrana json encode edip yazdıralım.
<?php header('Content-type: application/json'); // Tarayıcıdan girdiğimizde JSON formatında görelim. $db = new SQLite3('veritabanimiz.db'); //SQLite veritabanımıza bağlanalım. $jsonDizisi = array(); // JSON Dizimizi Oluşturalım. $sayac = 0; // İndis sayacımız $results = $db->query('SELECT * FROM kisiler'); //Kişiler tablomuzdan tüm verileri çekelim. while ($row = $results->fetchArray()) { // Satır satır verileri çektik. $jsonDizisi['kisiler'][$sayac]['id'] = $row["id"]; // json dizimizin kisiler -> indis -> id değerine çektiğimiz değeri atadık. $jsonDizisi['kisiler'][$sayac]['isim'] = $row["isim"]; // json dizimizin kisiler -> indis -> isim değerine çektiğimiz değeri atadık. $jsonDizisi['kisiler'][$sayac]['soyisim'] = $row["soyisim"]; // json dizimizin kisiler -> indis -> soyisim değerine çektiğimiz değeri atadık. $jsonDizisi['kisiler'][$sayac]['yas'] = $row["yas"]; // json dizimizin kisiler -> indis -> yas değerine çektiğimiz değeri atadık. $jsonDizisi['kisiler'][$sayac]['cinsiyet'] = $row["cinsiyet"]; // json dizimizin kisiler -> indis -> cinsiyet değerine çektiğimiz değeri atadık. $sayac++; // İndis sayacımızı arttırdık. } echo json_encode($jsonDizisi); //json dizimizi json formatına encode edip yazdırdık. ?>
Yazının başına bıraktığım linkten Github üzerinden inceleyebilirsiniz. Hadi kontrol edelim. https://furkansandal.com/github_projects/1-restapi-get/veri_cek.php adresinden inceleyebilirsiniz.
Görsellik ve okunabilirlik için jsonviewer.stack.hu adresine çıktımızı yapıştıralım ve kontrol edelim nasıl olmuş?
Ancak henüz RESTful API olmadı 🙂 Sadece verileri çekiyoruz. İleriki postlarda RESTful API’nin devamı için POST, DELETE, UPDATE üzerinede işlem yapacağız 🙂 Ama dikkat etmemiz gereken bir konu ise SQL Injection. İleriki kısımlarda parametre alacağımız için SQL Injection’a karşı dikkatli kod yazacağız 🙂