Aplikasi Rest API Client dengan Codeigniter 3

Pada arsitektur REST, dimana REST server menyediakan sumber data/ resource berupa data sedangkan REST client untuk mengakses dan menampilkan resource tersebut untuk digunakan sesuai keperluan, untuk REST client kita bisa buat dengan aplikasi berbasis web, mobile ataupun desktop.

Tutorial ini berhubungan dengan tutorial sebelumnya dimana kita telah sukses membuat Rest API Server dengan codeigniter 3, sehingga aplikasi REST API client ini nantinya akan mengambil data/resource dari REST API server yang telah kita buat pada tutorial sebelumnya.

Untuk komunikasi data antara client dan server REST API, disini kita menggunakan library tambahan agar bisa menjadi REST API Client yakni Guzzle sehingga client dapat terhubung ke REST API Server, dan dengan guzzle ini kita dipermudah didalam konfigurasinya. Guzzle pada saat tulisan ini dibuat sudah menggunakan versi 7.0, untuk lebih lengkap silahkan lihat dokumentasinya guzzle, selanjutnya untuk instal library kita masuk ke lokasi httdocs XAMPP codeigniter yang telah kita instal, kemudian menggunakan gitbash, atau comandpromt di composer ketik perintah berikut untuk menginstal library guzzle :

composer require guzzlehttp/guzzle

Spesifikasi yang digunakan dalam pembuatan REST API Client dengan Codeigniter 3 :

1.PHP 7.0
2.Codeigniter 3.1.13.
3 Guzzle v7.0 Doc, Guzzle Github.

Berikut tampilan Rest Client yang telah terkoneksi dengan Rest API Server :

Menampilkan data dari Rest API Server
Form tambah data
Detail data
Form Ubah data

Untuk notifikasi disini sudah menggunakan Sweetalert sehingga dapat menampilkan notifikasi sukses update atau tambah data lebih baik dari sisi tampilannya.

Selanjutnya kita buat Controller baru dengan nama Mahasiswa.php pada direktori application/controller di Codeigniter kita

<?php

class Mahasiswa extends CI_Controller
{
    public function __construct()
    {
        parent::__construct();
        $this->load->model('Mahasiswa_model');
        $this->load->library('form_validation');
    }

    // Menampilkan dan mencari data mahasiswa
    public function index()
    {
        $data['judul'] = 'Daftar Mahasiswa';
        $data['mahasiswa'] = $this->Mahasiswa_model->getAllMahasiswa();
        if ($this->input->post('keyword')) {
            $data['mahasiswa'] = $this->Mahasiswa_model->cariDataMahasiswa();
        }
        $this->load->view('templates/header', $data);
        $this->load->view('mahasiswa/index', $data);
        $this->load->view('templates/footer');
    }
    // Menambah Data
    public function tambah()
    {
        $data['judul'] = 'Form Tambah Data Mahasiswa';

        $this->form_validation->set_rules('nama', 'Nama', 'required');
        $this->form_validation->set_rules('nrp', 'NRP', 'required|numeric');
        $this->form_validation->set_rules('email', 'Email', 'required|valid_email');

        if ($this->form_validation->run() == false) {
            $this->load->view('templates/header', $data);
            $this->load->view('mahasiswa/tambah');
            $this->load->view('templates/footer');
        } else {
            $this->Mahasiswa_model->tambahDataMahasiswa();
            $this->session->set_flashdata('flash', 'Ditambahkan');
            redirect('mahasiswa');
        }
    }
    // Hapus data
    public function hapus($id)
    {
        $this->Mahasiswa_model->hapusDataMahasiswa($id);
        $this->session->set_flashdata('flash', 'Dihapus');
        redirect('mahasiswa');
    }

    // Detail data
    public function detail($id)
    {
        $data['judul'] = 'Detail Data Mahasiswa';
        $data['mahasiswa'] = $this->Mahasiswa_model->getMahasiswaById($id);
        $this->load->view('templates/header', $data);
        $this->load->view('mahasiswa/detail', $data);
        $this->load->view('templates/footer');
    }

    // Ubah data
    public function ubah($id)
    {
        $data['judul'] = 'Form Ubah Data Mahasiswa';
        $data['mahasiswa'] = $this->Mahasiswa_model->getMahasiswaById($id);
        $data['jurusan'] = ['Teknik Informatika', 'Teknik Mesin', 'Teknik Planologi', 'Teknik Pangan', 'Teknik Lingkungan'];

        $this->form_validation->set_rules('nama', 'Nama', 'required');
        $this->form_validation->set_rules('nrp', 'NRP', 'required|numeric');
        $this->form_validation->set_rules('email', 'Email', 'required|valid_email');

        if ($this->form_validation->run() == false) {
            $this->load->view('templates/header', $data);
            $this->load->view('mahasiswa/ubah', $data);
            $this->load->view('templates/footer');
        } else {
            $this->Mahasiswa_model->ubahDataMahasiswa();
            $this->session->set_flashdata('flash', 'Diubah');
            redirect('mahasiswa');
        }
    }
}

Selanjutnya kita buat Model baru dengan nama Mahasiswa_model.php pada direktori application/models di Codeigniter kita

<?php

use GuzzleHttp\Client;

class Mahasiswa_model extends CI_model
{
    // Konek ke Rest API Server, masukan alamat rest API server dan autentifikasinya, disesuaikan dengan alamat lokasi httdocs XAMPP komputernya teman-teman
    private $_client;
    public function __construct()
    {
        $this->_client = new Client([
            'base_uri' => 'http://localhost/rest-api/wpu-rest-server/',
            'auth' => ['admin', '1234']

        ]);
    }
    // menampilkan data mahasiswa
    public function getAllMahasiswa()
    {
        $response = $this->_client->request('GET', 'mahasiswa', [
            'query' => [
                'wpu-key' => 'rahasia'
            ]
        ]);

        $result = json_decode($response->getBody()->getContents(), true);
        return $result['data'];
    }
    // menampilkan data berdasar Id
    public function getMahasiswaById($id)
    {

        $response = $this->_client->request('GET', 'mahasiswa', [
            // Params
            'query' => [
                'wpu-key' => 'rahasia',
                'id' => $id
            ]
        ]);

        $result = json_decode($response->getBody()->getContents(), true);
        return $result['data'][0];
    }
    // tambah data 
    public function tambahDataMahasiswa()
    {
        $data = [
            "nama" => $this->input->post('nama', true),
            "nrp" => $this->input->post('nrp', true),
            "email" => $this->input->post('email', true),
            "jurusan" => $this->input->post('jurusan', true),
            'wpu-key' => 'rahasia'
        ];

        $response = $this->_client->request('POST', 'mahasiswa', [
            'form_params' => $data
        ]);

        $result = json_decode($response->getBody()->getContents(), true);
        return $result;
    }
    // Hapus data
    public function hapusDataMahasiswa($id)
    {
        $response = $this->_client->request('DELETE', 'mahasiswa', [
            'form_params' => [
                'id' => $id,
                'wpu-key' => 'rahasia'
            ]
        ]);

        $result = json_decode($response->getBody()->getContents(), true);
        return $result;
    }

    // Ubah Data
    public function ubahDataMahasiswa()
    {
        $data = [
            "nama" => $this->input->post('nama', true),
            "nrp" => $this->input->post('nrp', true),
            "email" => $this->input->post('email', true),
            "jurusan" => $this->input->post('jurusan', true),
            "id" => $this->input->post('id', true),
            "wpu-key" => 'rahasia'
        ];

        $response = $this->_client->request('PUT', 'mahasiswa', [
            'form_params' => $data
        ]);

        $result = json_decode($response->getBody()->getContents(), true);
        return $result;
    }

    // Cari data
    public function cariDataMahasiswa()
    {
        $keyword = $this->input->post('keyword', true);
        $this->db->like('nama', $keyword);
        $this->db->or_like('jurusan', $keyword);
        $this->db->or_like('nrp', $keyword);
        $this->db->or_like('email', $keyword);
        return $this->db->get('mahasiswa')->result_array();
    }
}

Untuk tampilan view disini kita menggunakan Bootstrap pada direktori application/views disini saya buat folder sesuai nama controller, dan menggunakan templates sehingga mempermudah kita didalam mengatur tampilannya, karena kodenya banyak teman-teman nanti langsung download source code diakhir tutorial.

Ikuti tutorial menarik lainnya :

1.Membuat REST API Server dengan Codeigniter 3
2.5 Rekomendasi template Admin Bootstrap
3.Buku tamu Online dengan Codeigniter 3

Apabila bermanfaat bisa bantu di share ke teman-teman lainnya, terima kasih teman-teman telah membaca tutorial ini sampai akhir, sumber tutorial ini dari chanel YT Webprograming Unpas dan dari sumber dari internet lainya sehingga saling melengkapi sehingga REST Client bisa berjalan dengan baik, untuk lebih lengkapnya silahkan download source code pada link berikut :

Download Source Code

Share and Enjoy !

You may also like...