Tutorial Membuat API dengan JWT dan Codeigniter

 Tutorial Membuat API dengan JWT dan Codeigniter

RESTful API / REST API merupakan implementasi dari API (Application Programming Interface). REST (Representional State Transfer) adalah suatu arsitektur metode komunikasi yang menggunakan protokol HTTP untuk pertukaran data dan metode ini sering diterapkan dalam pengembangan aplikasi. Dimana tujuannya adalah untuk menjadikan sistem yang memiliki performa yang baik, cepat dan mudah untuk di kembangkan (scale) terutama dalam pertukaran dan komunikasi data.


Tutorial Membuat REST API dengan Codeigniter dan JWT
Download semua yang diperlukan
# Framework Codeigniter 3.1.5 (https://codeigniter.com/download)
# Library PHP-JWT  (https://github.com/firebase/php-jwt)

Setelah itu semua di download lalu kita buka text editor kita.


1. Buka controller , buat folder baru namanya 'Api.php' , dan jangan pedulikan controller bawaan yang telah didownload tadi.

  1. <?php
  2. defined('BASEPATH') OR exit('No direct script access allowed');
  3. class Api extends REST_Controller {
  4.  public function index()
  5.  {
  6.   $this->load->view('json');
  7.  }
  8.  public function login()
  9.  {
  10.   $this->form_validation->set_rules('username', 'username', 'required|max_length[256]');
  11.   $this->form_validation->set_rules('password','password', 'required|min_length[2]|max_length[256]');
  12.   return Validation::validate($this, '', '', function($token, $output)
  13.   {
  14.    $username = $this->input->post('username');
  15.    $password = $this->input->post('password');
  16.    $id = $this->M_api->login($username, $password);
  17.    if ($id != false) {
  18.     $token = array();
  19.     $token['id'] = $id;
  20.     $output['status'] = true;
  21.     $output['username'] = $username;
  22.     $output['token'] = JWT::encode($token, $this->config->item('jwt_key'));
  23.    }
  24.    else
  25.    {
  26.     $output['errors'] = '{"type": "invalid"}';
  27.    }
  28.    return $output;
  29.   });
  30.  }
  31. public function list_produk()
  32.  {
  33.   return Validation::validate($this, 'user', 'read', function($token, $output)
  34.   {
  35.    $list = $this->M_api->get_list_produk();
  36.    foreach($list->result() as $data)
  37.    {
  38.     $output[] = array('id_produk' => $data->id_produk,
  39.      'nama' => $data->nama,
  40.      'harga' => $data->harga
  41.      );
  42.     $output['status'] = true;
  43.    }
  44.    return $output;
  45.   });
  46.  }
  47.  public function detail_produk()
  48.  {
  49.   $this->form_validation->set_rules('id_produk', 'id_produk', 'required|max_length[256]');
  50.   return Validation::validate($this, 'user', 'read', function($token, $output)
  51.   {
  52.    $detail = $this->M_api->detail_produk($this->input->post('id_produk'));
  53.    foreach($detail->result() as $data)
  54.    {
  55.     $output = array('id_produk' => $data->id_produk,
  56.      'nama' => $data->nama,
  57.      'deskripsi' => $data->deskripsi,
  58.      'harga' => $data->harga
  59.      );
  60.     $output['status'] = true;
  61.    }
  62.    return $output;
  63.   });
  64.  }
  65.  public function transaksi()
  66.  {
  67.   $this->form_validation->set_rules('order', 'order', 'required');
  68.   return Validation::validate($this, 'user', 'read', function($token, $output)
  69.   {
  70.    $parse = json_decode($this->input->post('order',true),true);
  71.    $id_user = $parse[0]['id_user'];
  72.    $lokasi = $parse[0]['lokasi'];
  73.    $alamat = $parse[0]['alamat'];
  74.    $detail = $parse[0]['myorder'];
  75.    $total = $detail['total'];
  76.  //insert tabel transaksi
  77.    $insert_trans = array('tanggal' => date('Y-m-d'),
  78.     'id_user' => $id_user,
  79.     'total' => $total,
  80.     'lokasi' => $lokasi,
  81.     'alamat' => $alamat
  82.     );
  83.    $this->db->insert('transaksi',$insert_trans);
  84.    $id_transaksi = $this->db->insert_id();
  85.    foreach ($detail['detail'] as $data) {
  86.     $nama[] = $data['nama'];
  87.     $id_produk[] = $data['id_menu'];
  88.     $qty[] = $data['qty'];
  89.     $insert_det = array('id_transaksi' => $id_transaksi,
  90.      'id_produk' => $data['id_menu'],
  91.      'qty' => $data['qty'],
  92.      );
  93.     $this->db->insert('detail_transaksi',$insert_det);
  94.    }
  95.    $output['pesan'] = "berhasil";
  96.    $output['status'] = true;
  97.    return $output;
  98.   });
  99.  }
  100. }

2.Lalu buat model dengan nama M_api.php

  1. <?php if (! defined('BASEPATH')) EXIT ('No direct script access allowed');
  2. class M_api extends CI_Model {
  3.  public function login($username, $password)
  4.  {
  5.   $query = $this->db->query("SELECT * from user_nizar where username ='$username' and status = 'active'");
  6.   if ($query->num_rows() == 1)
  7.   {
  8.    foreach ($query->result() as $data) {
  9.     $password_db = $data->password;
  10.     if ($password_db == md5($password)) {
  11.      return true;
  12.     } else {
  13.      return false;
  14.     }
  15.    }
  16.   }
  17.   else
  18.   {
  19.    return false;
  20.   }
  21.  }
  22.  public function get_list_produk()
  23.  {
  24.   return $this->db->get('produk_nizar');
  25.  }
  26.  public function detail_produk($id)
  27.  {
  28.   $query = $this->db->query("SELECT * from produk_nizar where id_produk = '$id'");
  29.   return $query;
  30.  }
  31. }

3.Percobaan untuk mendaparkan token

pertama buat data dumping pada user , kedua masukan username dan password pada postman untuk mendapatkan data json dan token , dan ketiga coba.



Dan itulah hasilnya kita telah mendapatkan token yang kita buat dengan REST API. Saya kira cukup sekian dan TERIMA KASIH.







Tidak ada komentar:

Posting Komentar