TUTORIAL JSON WEB TOKEN
Pengertian
API atau Application Programming Interface adalah aturan
atau protokol yang berupa antaramuka “interface” yang
memungkinkan interakasi antar program. API ini lah yang mencoba menjembatani
program-program untuk bisa berkomunikasi membangun fitur yang lebih kompleks.
Json Web Token (JWT)
adalah sebuah URL yang dikemas dengan aman untuk mewakili klaim transaksi
2 buah party. Klaim-nya sendiri di encode menjadi JSON object sebagai
tandatangan digital mengunakan JWS (JSON Web Signature)
Codeigniter pasti sudah
pada tahu, framework PHP yang cukup populer di Indonesia, jadi contoh
kasus kali ini adalah tentang pembuatan API transaksi,
Fitur – fiturnya adalah :
1. Login User
2. List Produk
3. Detail Produk
4. Transaksi
BERIKUT
INI ADALAH LANGKAH – LANGKAH DALAM MEMBUAT API TERSEBUT :
1. Buat Database dengan
struktur seperti pada gambar di bawah ini
Download semua yang diperlukan
· Framework
Codeigniter 3.1.5 (https://codeigniter.com/download)
· Library
PHP-JWT (https://github.com/firebase/php-jwt)
· Library
REST Server (https://github.com/chriskacerguis/codeigniter-restserver)
2. Buka controller , buat folder baru namanya 'Api.php' , dan
jangan pedulikan controller bawaan yang telah kita download tadi.
<?php
defined('BASEPATH') OR exit('No direct script access
allowed');
class Api extends REST_Controller {
public function
index()
{
$this->load->view('json');
}
public function
login()
{
$this->form_validation->set_rules('username', 'username',
'required|max_length[256]');
$this->form_validation->set_rules('password','password',
'required|min_length[2]|max_length[256]');
return
Validation::validate($this, '', '', function($token, $output)
{
$username =
$this->input->post('username');
$password =
$this->input->post('password');
$id =
$this->M_api->login($username, $password);
if ($id != false) {
$token = array();
$token['id'] = $id;
$output['status'] =
true;
$output['username']
= $username;
$output['token'] =
JWT::encode($token, $this->config->item('jwt_key'));
}
else
{
$output['errors'] =
'{"type": "invalid"}';
}
return $output;
});
}
public function list_produk()
{
return
Validation::validate($this, 'user', 'read', function($token, $output)
{
$list =
$this->M_api->get_list_produk();
foreach($list->result() as $data)
{
$output[] =
array('id_produk' => $data->id_produk,
'nama' =>
$data->nama,
'harga' =>
$data->harga
);
$output['status'] = true;
}
return $output;
});
}
public function
detail_produk()
{
$this->form_validation->set_rules('id_produk', 'id_produk',
'required|max_length[256]');
return
Validation::validate($this, 'user', 'read', function($token, $output)
{
$detail =
$this->M_api->detail_produk($this->input->post('id_produk'));
foreach($detail->result() as $data)
{
$output =
array('id_produk' => $data->id_produk,
'nama' => $data->nama,
'deskripsi' =>
$data->deskripsi,
'harga' =>
$data->harga
);
$output['status'] =
true;
}
return $output;
});
}
public function
transaksi()
{
$this->form_validation->set_rules('order', 'order', 'required');
return
Validation::validate($this, 'user', 'read', function($token, $output)
{
$parse =
json_decode($this->input->post('order',true),true);
$id_user =
$parse[0]['id_user'];
$lokasi =
$parse[0]['lokasi'];
$alamat =
$parse[0]['alamat'];
$detail =
$parse[0]['myorder'];
$total =
$detail['total'];
//insert tabel transaksi
$insert_trans =
array('tanggal' => date('Y-m-d'),
'id_user' =>
$id_user,
'total' =>
$total,
'lokasi' =>
$lokasi,
'alamat' => $alamat
);
$this->db->insert('transaksi',$insert_trans);
$id_transaksi =
$this->db->insert_id();
foreach
($detail['detail'] as $data) {
$nama[] =
$data['nama'];
$id_produk[] =
$data['id_menu'];
$qty[] =
$data['qty'];
$insert_det =
array('id_transaksi' => $id_transaksi,
'id_produk' =>
$data['id_menu'],
'qty' =>
$data['qty'],
);
$this->db->insert('detail_transaksi',$insert_det);
}
$output['pesan'] =
"berhasil";
$output['status'] =
true;
return $output;
});
}
}
3. Lalu buat model dengan nama M_api.php
<?php if (! defined('BASEPATH')) EXIT ('No direct script
access allowed');
class M_api extends CI_Model {
public function
login($username, $password)
{
$query =
$this->db->query("SELECT * from user_danar where username
='$username' and status = 'active'");
if
($query->num_rows() == 1)
{
foreach
($query->result() as $data) {
$password_db =
$data->password;
if ($password_db ==
md5($password)) {
return true;
} else {
return false;
}
}
}
else
{
return false;
}
}
public function
get_list_produk()
{
return
$this->db->get('produk_rizqi');
}
public function
detail_produk($id)
{
$query =
$this->db->query("SELECT * from produk_rizqi where id_produk =
'$id'");
return $query;
}
}
4. Percobaan untuk mendapatkan token
pertama buat data dumping pada user , kedua masukan username
dan password pada postman untuk mendapatkan data json dan token , dan ketiga
coba.
setelah itu,kalian akan mendapatkan token yang kita
buat dengan REST API .
itu saja dari saya .
TERIMAKASIH
Komentar
Posting Komentar