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 :
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 :