Membuat Web Service dengan NG Framework

Bagikan jika Anda sukai postingan ini!

JSON
JSON (JavaScript Object Notation)

Seperti kebanyakan framework, NG Framework juga dapat digunakan untuk membuat web service. Pada NG Framework modifikasi, telah tersedia sebuah Controller dengan nama ApiController yang dapat digunakan untuk keperluan web service. Untuk mencoba membuat web service dengan NG Framework, silakan buka kembali proyek ng-bootstrap yang sudah dibuat sebelumnya.

Kita akan mencoba membuat sebuah web service dengan hasil keluaran berupa format JSON (JavaScript Object Notation).

Buka berkas ApiController.php di \apps\Controller, ubah kode sumber menjadi seperti di bawah ini.

<?php
class ApiController extends NG\Controller {
    protected $config;
    protected $cache;
    protected $session;
    protected $cookie;
    
    public function init() {
        $this->config = $this->view->config = \NG\Registry::get('config');
        $this->session = $this->view->session = new \NG\Session();
        $this->cookie = $this->view->cookie = new \NG\Cookie();
        $this->cache = $this->view->cache = new \NG\Cache();
        
        $this->view->setLayout(false);
        $this->view->setNoRender(true);
    }
    
    public function IndexAction() {
        $result = null;
        $requests = \NG\Route::getRequests();
        
        $session = $this->session;
        $cookie = $this->cookie;
        $cache = $this->cache;
        
        $param1 = '';
        $param2 = '';
        $param3 = '';
        
        if ($requests){
            if (isset($requests['param1'])){
                $param1 = $requests['param1'];
            }
            if (isset($requests['param2'])){
                $param2 = $requests['param2'];
            }
            if (isset($requests['param3'])){
                $param3 = $requests['param3'];
            }
            
            $kontak = new Kontak();
            
            if ($param1){
                switch($param1){
                    /* Bila param1 adalah "kontak" 
                    contoh: http://localhost/ng-bootstrap/api/kontak
                    */
                    case 'kontak':
                        /* Bila ada param2 
                        contoh: http://localhost/ng-bootstrap/api/kontak/1
                        */
                        if ($param2){
                            $result = $kontak->getKontak($param2);
                        } else {
                            $result = $kontak->fetchKontak();
                        }
                    break;
                }
            }
        }
        
        if ($result){
            $print_text = json_encode($result);
            header('Content-type: application/json');
            exit($print_text);
        }
    }
}
?>

Kita membutuhkan deklarasi fungsi baru pada Model Kontak, untuk menampilkan informasi kontak tertentu berdasarkan id yang dikirimkan. Buka berkas Kontak.php di \apps\Model, tambahkan deklarasi fungsi baru di bawah ini.

    public function getKontak($id){
        $database = $this->database;
        $query = $this->query;
        $table = $this->table;
        $sql = $query->select()->from($table)->where("id = ?", $id);
        $result = $database->fetchRow($sql);
        
        return $result;
    }

Sekarang mari kita coba panggil:

http://localhost/ng-bootstrap/api/kontak

Hasil JSON saat memanggil web service kontak
Hasil JSON saat memanggil web service kontak

Kita coba panggil lainnya:

http://localhost/ng-bootstrap/api/kontak/1

Hasil JSON saat memanggil web service kontak berdasarkan id
Hasil JSON saat memanggil web service kontak berdasarkan id

Mudah bukan?