CMS Balitbang to Mobile : Membuat CRUD Restfull Api Sederhana Part #2

gurukomline.com,  tutorial ini adalah lanjutan dari tutorial sebelumnya cms balitbang to mobile: Membuat Aplikasi Balitbang dengan Sketchware Part #1 , disini saya akan membahas bagaimana cara membuat restfull Api atau sederhananya mengkonversi database mysql ke bentuk json file. 

Kenapa Harus Buat CRUD Restfull Api?

Agar database mysql dari cms balitbang dapat terhubung/terbaca oleh aplikasi android yang akan kita buat, maka database mysql tersebut harus kita konversi menjadi json file. Bagi rekan-rekan yang belum tahu apa itu CRUD, CRUD adalah singkatan dari Create, Read, Update, Delete jadi fungsi dari crud ini untuk menambah data, membaca/menampilkan data, mengupdate data, dan menghapus data. Sebuah aplikasi pasti butuh crud ini. Pada tutorial kali ini saya akan memberikan contoh crud restfull Api, atau crud json yang paling sederhana. Saya harapkan dari contoh ini rekan-rekan bisa mengembangkan crud restfull api yang lebih lengkap lagi.

Alur Kerja cms balitbang to mobile

Keterangan
  1. Database mysql kita konversi ke Json file
  2. json file ini yang akan kita gunakan sebagai sumber data aplikasi kita

Langkah-langkah Membuat CRUD restfull api sederhana

#1 Persiapan

Kita akan membuat restfull api di localhost dulu baru nanti kita upload di hostingan kita, yang harus di siapkan antara lain:
  • harus sudah terinstal webserver seperti xampp atau yang lainnya.
  • terinstal cms balitbang
  • php editor bebas

#2 Susunan folder

  • Buatkan folder dengan nama balitbang-api di folder htdocs
  • kemudian buatkan folder dengan nama views didalam folder balitbang-api
lihat gambar di bawah untuk lebih jelasnya

Susunan Folder

#3 Membuat file koneksi ke database cms balitbang

  • Membuat file index.php di folder balitbang-api, dengan cara:
  1. buka php editor (notepad++), 
  2. kemudian klik menu file-> new 
  3. kemudian file->save as - pilih folder penyimpanan balitbang-api 
  4. kemudian dibagian file name isikan nama filenya index.php
  • Dengan cara yang sama di atas buatkan file koneksi.php di folder balitbang-api
  • kemudian tambahkan kode dibawah ini, tinggal di copy dan paste ke file koneksi.php ya,  tidak usah di ketik ... capek he he he
<?php
    Class dbObj {
        /* Database connection cms balitbang */
        var $servername = "localhost";
        var $username = "root";
        var $password = "";
        var $dbname = "newgcms";
        var $conn;    
        
        function getConnstring() {
            $con = mysqli_connect($this->servername, $this->username,
            $this->password, $this->dbname) or
             
             die("Connection failed: " . mysqli_connect_error());
             
        /* check connection */
            if (mysqli_connect_errno()) {
                printf("Connect failed: %s\n", mysqli_connect_error());
                exit();
            } else {
                $this->conn = $con;
            }
                return $this->conn;
        }
    }
?>
  • kemudian file->save
Catatan:
sesuaikan konfigurasi database crud api yang kita buat dengan konfigurasi database cms balitbang pada file config.php di folder lib, untuk lebih jelasnya lihat gambar dibawah ini:



#4 Mengambil semua data dari tabel t_staf database cms balitbang

Tutorial ini hanya fokus pada satu tabel yaitu t_staf  berisi data guru dan tas, dari contoh ini diharapkan bisa untuk mengambil data dari tabel yang lainnya. Perhatikan struktur tabel t_staf di bawah ini


Field/kolom tabel t_staf

Ok ikuti langkah-langkah dibawah ini ya ...
  • Buatkan file baru dengan nama staf.php di folder views, kemudian copy dan paste kode di bawah ini
<?php
// Connect to database
include("../koneksi.php");
$db = new dbObj();
$connection = $db->getConnstring();
$request_method=$_SERVER["REQUEST_METHOD"];

switch($request_method) {
    case 'GET':
        //ambil data guru dan tas
        get_staf();
        break;
    default:
        // Invalid Request Method
        header("HTTP/1.0 405 Method Not Allowed");
        break;
}

function get_staf() {
    global $connection;
    $query="SELECT * FROM t_staf";
    $response=array();
    $result=mysqli_query($connection, $query);
    
    while($row=mysqli_fetch_assoc($result)) {
        if($row["kelamin"]=="L"){
            $kelamin = "Laki-laki";
        }else{
            $kelamin = "Perempuan";
        }
        if($row["kategori"]=="0"){
            $status = "Guru ".$row["pelajaran"]; 
        }else{
            $status = "Tenaga Administrasi Sekolah";
        }
        //folder dimana gambar staf di simpan di cms balitbang
        $folder_gbr = "http://masjogja.sman3kotasukabumi.sch.id/newgcms/images/staf/";
        //$response[]=$row;
        $response[]= array(
              'id' => $row["user_id"],
              'nama' => $row["nama"],
              'nip'=>$row["nip"],
              'kelamin' =>$kelamin,
              'alamat' =>$row["alamat"],
              'tugas' =>$row["tugas"],
              'telp' =>$row["telp"],
              'hp' =>$row["hp"],
              'email' =>$row["email"],
              'pelajaran' =>$row["pelajaran"],
              'tgl_lahir' =>$row["tgl_lahir"],
              'tmp_lahir' =>$row["tmp_lahir"],
              'kode' =>$row["kode"],
              'pangkat' =>$row["pangkat"],
              'kategori' =>$row["kategori"],
              'profilstaf' =>$row["profilstaf"],
              'nuptk' =>$row["nuptk"],
              'status'=>$status,
              'gbr' =>$folder_gbr.$row["nip"].".jpg"
          );
    }
    
    header('Content-Type: application/json');
    echo json_encode($response);
}


inti dari kode di atas adalah mengoneksikan ke database cms balitbang dan mendapatkan informasi aksi request REST dengan metode $_SERVER apakah aksi tersebut GET untuk mengambil data, POST untuk menambah data, PUT untuk mengupdate data dan DELETE untuk menghapus data kemudian kita gunakan perintah switch untuk memilih request nya.

Jika request REST nya GET maka akan memanggil fungsi get_staf() yaitu mengambil semua data yang ada di tabel t_staf dan mengkonversinya menjadi json file.

  • Kemudian file->save untuk menyimpan datanya

Test apakah kode di atas sudah berhasil
Sebelumnya kita akan rapihkan urlnya dengan menambahkan file .htaccess di folder views kemudian copy paste kode di bawah ini:

RewriteEngine On # Turn on the rewriting engine
RewriteRule ^staf/?$ staf.php [NC,L]

Maksud kode diatas mealiaskan url asli ke url yang baru, 

Untuk uji test silahkan buka browser dan ketikan url baru http://localhost/balitbang-api/views/staf , kalo berhasil tampilan akan seperti gambar dibawah ini

berubah menjadi json file

gunakan post man biar datanya keliahatan rapih seperi gambar di bawah ini

Tampilan di postman

#5 Menambah data Guru dan Staf

  • Masih di file staf.php tambahkan kode berikut ini di bawah case 'GET' 
case 'POST':
        // tambah data guru dan tas
        insert_staf();
        break;
  • Kemudian tambahkan kode berikut ini dibawah function get_staf() 
function insert_staf() {
    global $connection;
    $data = json_decode(file_get_contents('php://input'), true);

    $nama=$data["nama"];
    $nip=$data["nip"];
    $kelamin=$data["kelamin"];
    $alamat=$data["alamat"];
    $tugas=$data["tugas"];
    $telp=$data["telp"];
    $hp=$data["hp"];
    $email=$data["email"];
    $pelajaran=$data["pelajaran"];
    $tgl_lahir=$data["tgl_lahir"];
    $tmp_lahir=$data["tmp_lahir"];
    $kode=$data["kode"];
    $pangkat=$data["pangkat"];
    $kategori=$data["kategori"];
    $profilstaf=$data["profilstaf"];
    $nuptk=$data["nuptk"];
    
    echo $query="INSERT INTO t_staf SET

        nama='".$nama."',
        nip='".$nip."',
        kelamin='".$kelamin."',
        alamat='".$alamat."',
        tugas='".$tugas."',
        telp='".$telp."',
        hp='".$hp."',
        email='".$email."',
        pelajaran='".$pelajaran."',
        tgl_lahir='".$tgl_lahir."',
        tmp_lahir='".$tmp_lahir."',
        kode='".$kode."',
        pangkat='".$pangkat."',
        kategori='".$kategori."',
        profilstaf='".$profilstaf."',
        nuptk='".$nuptk."'";

    if(mysqli_query($connection, $query)) {
        $response=array(
        'status' => 1,
        'status_message' =>'Data Guru dan TAS berhasil ditambah.'
        );
    }
    else {
        $response=array(
        'status' => 0,
        'status_message' =>'Penambahan Data Guru dan TAS Gagal.'
        );
    }
    header('Content-Type: application/json');
    echo json_encode($response);
}


  • tambahkan kode berikut di file htaccess
RewriteRule ^tambah-staf/?$ staf.php [NC,L]


  • TEST dengan url : http://localhost/balitbang-api/views/tambah-staf dan hasilnya harusnya seperti dibawah ini
Data berhasil di tambah

#6 Mengupdate data Guru dan TAS

  • Masih di file staf.php tambahkan kode berikut ini di bawah case 'POST' 
case 'PUT':
        // Update data guru dan tas
        $id=intval($_GET["id"]);
        update_staf($id);
        break; 
  • Kemudian tambahkan kode berikut ini dibawah function insert_staf() 
function update_staf($id) {
    global $connection;
    $post_vars = json_decode(file_get_contents("php://input"),true);
    $nama=$post_vars["nama"];
    $nip=$post_vars["nip"];
    $kelamin=$post_vars["kelamin"];
    $alamat=$post_vars["alamat"];
    $tugas=$post_vars["tugas"];
    $telp=$post_vars["telp"];
    $hp=$post_vars["hp"];
    $email=$post_vars["email"];
    $pelajaran=$post_vars["pelajaran"];
    $tgl_lahir=$post_vars["tgl_lahir"];
    $tmp_lahir=$post_vars["tmp_lahir"];
    $kode=$post_vars["kode"];
    $pangkat=$post_vars["pangkat"];
    $kategori=$post_vars["kategori"];
    $profilstaf=$post_vars["profilstaf"];
    $nuptk=$post_vars["nuptk"];
    
    
    $query="UPDATE t_staf SET 
        nama='".$nama."',
        nip='".$nip."',
        kelamin='".$kelamin."',
        alamat='".$alamat."',
        tugas='".$tugas."',
        telp='".$telp."',
        hp='".$hp."',
        email='".$email."',
        pelajaran='".$pelajaran."',
        tgl_lahir='".$tgl_lahir."',
        tmp_lahir='".$tmp_lahir."', 
        kode='".$kode."', 
        pangkat='".$pangkat."',
        kategori='".$kategori."', 
        profilstaf='".$profilstaf."', 
        nuptk='".$nuptk."'
        WHERE user_id=".$id;

    if(mysqli_query($connection, $query)) {
    $response=array(
        'status' => 1,
        'status_message' =>'Update data Guru dan TAS berhasil.'
    );
    }
    else {
    $response=array(
        'status' => 0,
        'status_message' =>'Update data Guru dan TAS gagal.'
    );
    }
    header('Content-Type: application/json');
    echo json_encode($response);
}

  • tambahkan kode berikut di file htaccess
RewriteRule ^update-staf/([0-9]+)/?$ staf.php?id=$1 [NC,L]


  • TEST dengan url : http://localhost/balitbang-api/views/update-staf/id dan hasilnya harusnya seperti dibawah ini

Data berhasil di update

#7 Hapus data Guru dan TAS

  • Masih di file staf.php tambahkan kode berikut ini di bawah case 'PUT' 
case 'DELETE':
        // Delete data guru dan tas
        $id=intval($_GET["id"]);
        delete_staf($id);
        break; 
  • Kemudian tambahkan kode berikut ini dibawah function update_staf() 
function delete_staf($id) {
    global $connection;
    $query="DELETE FROM t_staf WHERE user_id=".$id;

    if(mysqli_query($connection, $query)) {
        $response=array(
        'status' => 1,
        'status_message' =>'Data Guru dan TAS berhasil dihapus.'
        );
    }
    else {
        $response=array(
        'status' => 0,
        'status_message' =>'Data Guru dan TAS gagal dihapus.'
        );
    }
    header('Content-Type: application/json');
    echo json_encode($response);
}

  • tambahkan kode berikut di file htaccess
RewriteRule ^delete-staf/([0-9]+)/?$ staf.php?id=$1 [NC,L]


  • TEST dengan url : http://localhost/balitbang-api/views/delete-staf/id dan hasilnya harusnya seperti dibawah ini
delete data guru dan tas


Alhamdulillah tutorial membuat restfull api sederhana dengan php akhirnya selesai juga walaupun keliahatannya panjang tapi kalo di lakukan tidak ... yang penting jangan mikirin kodenya cukup memahami aja dan cukup copy paste ....

Bagi yang belum berhasil

Bagi rekan-rekan yang belum berhasil bisa lihat juga video tutorialnya dan kalo belum berhasil bisa juga download filenya di sini

Terima kasih semoga bermanfaat
Gurukomline
Gurukomline Guru Komputer Online, sharing seputar Ilmu Komputer gurukomline.my.id

1 komentar untuk "CMS Balitbang to Mobile : Membuat CRUD Restfull Api Sederhana Part #2"