Membangun Rest API Client Dengan Codeigniter 3
Rest API Client, Codeigniter 3 , Curl, Rest API PHP
REST server menyediakan resources atau sumber data sedangkan REST client adalah sebuah aplikasi yang akan mengakses ,menggunakan dan menampilkan dari resource tersebut untuk penggunaan sesuai dengan kebutuhan. Rest client dapat dibuat dengan berbagai platform dengan bahasa pemrograman yang berbeda yang mendukung pembacaann Rest API. aplikasi dapat berupa aplikasi web, mobile dan desktop.
Pada artikel berikut yang akan kita buat adalah sebuah aplikasi client dengan menggunakan bahasa pemrograman PHP dengan framework codeigniter, codeigniter sudah menyediakan library tambahan berupa library curl.
Curl adalah sebuah libarary yang dapat kita gunakan untuk mengakses sebuah REST API dari atau ke sebuah server. berikut adalah penggunaan library Curl untuk memnakses resource / REST api yang telah kita buat sebelumnya.
# Persiapan File
Dalam pembuatan Rest api client ini diperlukan :
- Webserver yang digunakan kami adalah XAMPP, tetapi boleh juga menggunakan web server yang lainnya.
- REST API Server yang telah kita buat sebelumnya, jika belum silahkan buka halaman berikut : Disini
- Codeigniter 3.1.11 yang dapat didownload Disini.
- Library curl yang akan kita gunakan adalah library pihak ketiga yang dapat didownload Disini untuk versi terbaru atau versi yang akan kita gunakan bisa didownload Disini.
Setelah file yang dibutuhkan didownload saat nya kita ekstrak dan rename file framewrok codeiniter menjadi ci-client dan masukan File Curl.php kedalam folder application/libraries. sebelum dilanjutkan pastikan dahulu project ci-client dapat diakses melalui browser ( jangan lupa hidupkan apache yang ada di Xampp ya..) sehingga hasilnya seperti berikut.
Jika sudah sesuai saatnya kita lanjutkan proses berikutnya yaitu mengakses Rest API untuk :
- Menampilkan data
- Mebambah data
- Mengubah data
- Menghapus data
- v_list.php, digunakan untuk menampilkan data
- v_form.php, digunakan untuk menyimpan data
- v_edit.php, digunakan untuk mengubah data.
Setelah membuat file Produk.php pada controller kita akan membuat Constructor yang berguna untuk memanggil library yang akan kita aktifkan saat halaman diload. sehingga file Produk.php seperti berikut :
<?php
Class Produk extends CI_Controller{
var $api ="";
function __construct() {
parent::__construct();
$this->api="http://localhost/rest-server/index.php";
$this->load->library('session');
$this->load->library('curl');
$this->load->helper('form');
$this->load->helper('url');
}
# Menampilkan data dari Rest API
Tambahkan sebuah fungsi dibawah Construktor diatas untuk menampilkan data sebagai berikut :
function index(){
$data['data_produk'] = json_decode($this->curl->simple_get($this->api.'/produk'));
$this->load->view('produk/v_list',$data);
}
# Menyimpan data Produk
function simpan() {
if (isset($_POST['submit'])) {
$data = array(
'nama_produk' => $this->input->post('nama_produk'),
'tipe_produk' => $this->input->post('tipe_produk'),
'harga' => $this->input->post('harga'),
'stok' => $this->input->post('stok'));
$insert = $this->curl->simple_post($this->api . '/produk', $data, array(CURLOPT_BUFFERSIZE => 10));
if ($insert) {
$this->session->set_flashdata('info', 'data berhasil disimpan.');
} else {
$this->session->set_flashdata('info', 'data gagal disimpan.');
}
redirect('produk');
} else {
$this->load->view('produk/v_form');
}
}
# Ubah Data Produk
// edit data produk
function edit() {
if (isset($_POST['submit'])) {
$data = array(
'id' => $this->input->post('id'),
'nama_produk' => $this->input->post('nama_produk'),
'tipe_produk' => $this->input->post('tipe_produk'),
'harga' => $this->input->post('harga'),
'stok' => $this->input->post('stok'));
$update = $this->curl->simple_put($this->api . '/produk', $data, array(CURLOPT_BUFFERSIZE => 10));
if ($update) {
$this->session->set_flashdata('info', 'Data Berhasil diubah');
} else {
$this->session->set_flashdata('info', 'Data Gagal diubah');
}
redirect('produk');
} else {
$params = array('id' => $this->uri->segment(3));
$data['data_produk'] = json_decode($this->curl->simple_get($this->api . '/produk', $params));
$this->load->view('produk/v_edit', $data);
}
}
# Hapus Data Produk
// hapus data produk berdasarkan id
function delete($id) {
if (empty($id)) {
redirect('produk');
} else {
$delete = $this->curl->simple_delete($this->api . '/produk', array('id' => $id), array(CURLOPT_BUFFERSIZE => 10));
if ($delete) {
$this->session->set_flashdata('info', 'Data Berhasil dihapus');
} else {
$this->session->set_flashdata('info', 'Data Gagal dihapus');
}
redirect('produk');
}
}
Sehingga coding lengkap pada controller Produk.php adalah sebagai berikut :
<?php
Class Produk extends CI_Controller {
var $api = "";
function __construct() {
parent::__construct();
$this->api = "http://localhost/rest-server/index.php";
$this->load->library('session');
$this->load->library('curl');
$this->load->helper('form');
$this->load->helper('url');
}
// menampilkan data produk
function index() {
$data['data_produk'] = json_decode($this->curl->simple_get($this->api . '/produk'));
$this->load->view('produk/v_list', $data);
}
// simpan data produk
function simpan() {
if (isset($_POST['submit'])) {
$data = array(
'nama_produk' => $this->input->post('nama_produk'),
'tipe_produk' => $this->input->post('tipe_produk'),
'harga' => $this->input->post('harga'),
'stok' => $this->input->post('stok'));
$insert = $this->curl->simple_post($this->api . '/produk', $data, array(CURLOPT_BUFFERSIZE => 10));
if ($insert) {
$this->session->set_flashdata('info', 'data berhasil disimpan.');
} else {
$this->session->set_flashdata('info', 'data gagal disimpan.');
}
redirect('produk');
} else {
$this->load->view('produk/v_form');
}
}
// edit data produk
function edit() {
if (isset($_POST['submit'])) {
$data = array(
'id' => $this->input->post('id'),
'nama_produk' => $this->input->post('nama_produk'),
'tipe_produk' => $this->input->post('tipe_produk'),
'harga' => $this->input->post('harga'),
'stok' => $this->input->post('stok'));
$update = $this->curl->simple_put($this->api . '/produk', $data, array(CURLOPT_BUFFERSIZE => 10));
if ($update) {
$this->session->set_flashdata('info', 'Data Berhasil diubah');
} else {
$this->session->set_flashdata('info', 'Data Gagal diubah');
}
redirect('produk');
} else {
$params = array('id' => $this->uri->segment(3));
$data['data_produk'] = json_decode($this->curl->simple_get($this->api . '/produk', $params));
$this->load->view('produk/v_edit', $data);
}
}
// hapus data produk berdasarkan id
function delete($id) {
if (empty($id)) {
redirect('produk');
} else {
$delete = $this->curl->simple_delete($this->api . '/produk', array('id' => $id), array(CURLOPT_BUFFERSIZE => 10));
if ($delete) {
$this->session->set_flashdata('info', 'Data Berhasil dihapus');
} else {
$this->session->set_flashdata('info', 'Data Gagal dihapus');
}
redirect('produk');
}
}
}
Selanjutnya kita akan membuat coding pada file v_list.php untuk menampilkan data produk, coding pada file tersebut adalah sebagai berikut :
<font color="orange">
<?php echo $this->session->flashdata('info'); ?>
</font>
<h1>DATA PRODUK</h1>
<table border="1">
<tr>
<th>ID</th>
<th>NAMA</th>
<th>TIPE PRODUK</th>
<th>HARGA</th>
<th>STOK</th>
<th>AKSI</th>
</tr>
<?php
foreach ($data_produk as $produk) {
echo "<tr>
<td>$produk->id</td>
<td>$produk->nama_produk</td>
<td>$produk->tipe_produk</td>
<td>$produk->harga</td>
<td>$produk->stok</td>
<td>" . anchor('produk/edit/' . $produk->id, 'Edit') . "
" . anchor('produk/delete/' . $produk->id, 'Delete') . "</td>
</tr>";
}
?>
</table>
<a href=<?=base_url()?>index.php/produk/simpan>+ Tambah data</a>
Berikutnya adalah coding pada file v_form.php untuk input data produk, coding pada file tersebut adalah sebagai berikut :
<?php echo form_open_multipart('produk/simpan'); ?>
<h1>TAMBAH DATA</h1>
<table>
<tr>
<td>NAMA PRODUK</td><td><?php echo form_input('nama_produk'); ?></td>
</tr>
<tr>
<td>TIPE PRODUK</td><td><?php echo form_input('tipe_produk'); ?></td>
</tr>
<tr>
<td>HARGA</td><td><?php echo form_input('harga'); ?></td>
</tr>
<tr>
<td>STOK</td><td><?php echo form_input('stok'); ?></td>
</tr>
<tr>
<td></td>
<td colspan="2">
<?php echo form_submit('submit', 'Simpan'); ?>
<?php echo anchor('produk', 'Kembali'); ?></td></tr>
</table>
<?php
echo form_close();
?>
Berikutnya adalah coding pada file v_edit.php yang akan digunakan untuk edit data produk, coding pada file tersebut adalah sebagai berikut :
<?php echo form_open('produk/edit'); ?>
<?php echo form_hidden('id', $data_produk[0]->id); ?>
<h1>EDIT PRODUK</h1>
<table>
<tr><td>ID</td><td><?php echo form_input('', $data_produk[0]->id, "disabled"); ?></td></tr>
<tr><td>NAMA</td><td><?php echo form_input('nama_produk', $data_produk[0]->nama_produk); ?></td></tr>
<tr><td>TIPE PRODUK</td><td><?php echo form_input('tipe_produk', $data_produk[0]->tipe_produk); ?></td></tr>
<tr><td>HARGA</td><td><?php echo form_input('harga', $data_produk[0]->harga); ?></td></tr>
<tr><td>STOK</td><td><?php echo form_input('stok', $data_produk[0]->stok); ?></td></tr>
<tr><td colspan="2">
<?php echo form_submit('submit', 'Simpan'); ?>
<?php echo anchor('produk', 'Kembali'); ?></td></tr>
</table>
<?php
echo form_close();
?>
coding kita telah selesai saat nya mencoba jalankan project yang sudah kita kerjakan pada url berikut:
http://localhost/ci-client/index.php/produk jika data berhasil tampil lanjutkan dengan mencoba menambahkan data,edit data dan hapus data.
sekian, terimakasih.
Baca juga :
- 30+ Latihan Soal dan Jawaban PAS Fisika Kelas XI K13 Terbaru
- 30+ Latihan Soal dan Jawaban PAS Kimia Kelas XI K13 Terbaru
- 30+ Latihan Soal dan Jawaban PAS Matematika Kelas XI K13 Terbaru
- 30+ Latihan Soal dan Jawaban PAS Matematika Peminatan Kelas XI K13 Terbaru
- 40 Latihan Soal dan Jawaban Bahasa Indonesia PAS Ganjil Kelas XI K13 Terbaru
- 40 Latihan Soal dan Jawaban PAI PAS Ganjil Kelas XI K13 Terbaru
- 40 Soal dan Jawaban Bahasa Inggris PAS Ganjil Kelas XI K13 Terbaru
Gabung dalam percakapan