Menu

Fashion Trendy
  • Drop Down

    • Abstract
    • Model
    • Techo
    • Options
  • Photography Pictures Product

    Drop Menu

    • Crystal
    • Digital
    • Graphs
    • Settings
  • Menu

    Dunia Program Komputer

    Blog Ini Membahas Tentang Hal Yang Berkaitan Dengan Komputer

    • Home
    • Troubleshooting
      • Personal Computer
        • Programming
        • Networking
      • Handphone
        • Empty
        • Empty
        • Empty
        • CSS 4
        • Empty
      • Empty
        • Empty
        • Empty
    • Empty
      • Empty
        • Sub Item
        • Sub Item
      • Empty
        • Sub Item
        • Sub Item
    • Empty
    • Contact Us
    Go
    Home » Unlabelled » Membuat WebService dengan Slim Framework

    Membuat WebService dengan Slim Framework

    Membuat WebService dengan Slim Framework. Pada tutorial kita akan belajar menggunakan slim framework 3.0 untuk membuat RESTful webservice. RESTful adalah arsitektur REST(Representational State Transfer) berbasis webservice. Dalam Arsitektur REST semuanya adalah resource. Untuk lebih mengenal RESTful bisa baca referensi ini http://www.ibm.com/developerworks/webservices/library/ws-restful/. Pada tutorial ini saya menggunakan XAMPP di Windows, bisa didownload di https://www.apachefriends.org/index.html. System Requirements yang dibutuhkan slim adalah Web server dengan URL rewriting dan PHP 5.5 atau versi terbaru.

    Tutorial Membuat WebService dengan Slim Framework di Windows

    1. Install XAMPP.
    2. Konfigurasi Apache untuk mengaktifkan mod_rewrite.
    Buka http.conf dengan klik config pada apache -> Apache(http.conf)


      4. Pada http.conf hilangkan tanda pagar(#) di LoadModule rewrite_module modules/mod_rewrite.s.

      Dalam <Directory “C:/xampp/htdocs”>..</Directory> ubah AllowOverride none menjadi AllowOverride all.

      5. Aktifkan Apache dan MySQL dengan klik Start.

     6. Untuk menginstall Slim, kita gunakan composer sebagai Dependency Manager for PHP. Download Composer-Setup.exe di https://getcomposer.org/download/.

     Disarankan untuk menginstall Shell Menus, kita dapat menggunakan composer dengan klik kanan pada folder project kita.
    7. Buat folder untuk project kita dengan nama slimteknorial di htdocs yang terletak di C:\XAMPP\htdocs.
    8. klik kanan pada folder slimteknorial dan pilih use composer here.
    9. Untuk menginstall slim, masukan kode berikut di CMD yang sudah terbuka.
     
    composer require slim/slim "^3.0"
     
     10. Masuk ke folder slimproject dan buat file baru dengan nama index.php
    
    11. Sekarang kita mencoba menampilkan Hello World di Slim. Buka index.php dan tambahkan kode berikut.
     
    <?php 
    require 'vendor/autoload.php';
    //membuat dan mengkonfigurasi slim app
    $app = new \Slim\app;
    
    //mendefinisikan route app untuk home
    $app-> get('/', function(){
        echo "Hello World by slimteknorial";
    });
    
    //run App
    $app->run(); 
     
    buka localhost/slimteknorial di browser dan Home kita akan seperti screenshot berikut. 
    
    

    Tutorial Membuat CRUD(Create, Read, Update, Delete) dengan Slim

    Pada tahap ini kita menggunakan MySQL dan library NotORM untuk memudahkan kita dalam bekerja dengan database.
    1. Buka phpMyAdmin dan buat database dengan nama slimteknorialdb
    2. Dalam slimteknorialdb , buat tabel dengan nama produk dan isi beberapa kolom seperti gambar berikut.

      3. Dalam tabel produk insert data-data berikut.
     4. Sekarang kita akan menggunakan library NotORM dengan download di http://www.notorm.com/. Buat folder baru dengan nama libs dan masukan hasil download NotORM ke dalam folder libs.

    5. Buka kembali index.php, tambahkan kode berikut untuk konfigurasi database.
    <?php 
    require 'vendor/autoload.php';
    require 'libs/NotORM.php'; 
    //membuat dan mengkonfigurasi slim app
    $app = new \Slim\app;
    
    // konfigurasi database
    $dbhost = 'localhost';
    $dbuser = 'root';
    $dbpass = '';
    $dbname = 'slimteknorialdb';
    $dbmethod = 'mysql:dbname=';
    
    $dsn = $dbmethod.$dbname;
    $pdo = new PDO($dsn, $dbuser, $dbpass);
    $db  = new NotORM($pdo);
    
    //mendefinisikan route app di home
    $app-> get('/', function(){
        echo "Hello World by slimteknorial";
    });
    
    //run App
    $app->run();
    
    6. Sekarang kita akan gunakan 4 HTTP method untuk RESTful webservice yaitu GET, POST, PUT, dan DELETE.
    – GET
    Kita akan mencoba mengambil data dari database. Buat route baru ketika user atau aplikasi masuk ke Base URL (localhost/slimteknorial) dan menambahkan /produks ,maka semua data dari database akan muncul dengan format JSON.
    Ikuti kode berikut dan letakan dibawah route home dan diatas $app->run();
    // Mendapatkan semua data produk 
    $app ->get('/semuaproduk', function() use($app, $db){
        foreach($db->produk() as $data){
            $produk['semuaproduk'][] = array(
                'id_produk' => $data['id_produk'],
                'nama' => $data['nama'],
                'harga' => $data['harga'],
                'status' => $data['status']
                );
        }
        echo json_encode($produk);
    });
    Jika Anda coba membuka localhost/slimteknorial/semuaproduk dibrowser maka akan muncul error Object not found!, itu terjadi karena kita belum membuat file .htaccess , buat file baru dan tulis .htaccess setelah itu save.

     Replace isi dari dari .htaccess dengan kode berikut.
     
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^ index.php [QSA,L]

    Sekarang coba kembali buka localhost/slimteknorial/semuaproduk dan hasilnya seperti berikut.

     

    Untuk mengambil salah satu data berdasarkan id, buat route GET baru seperti berikut. Setiap menambahkan route harus letakan di atas $app->run().
    // Mendapatkan salah satu data
    $app ->get('/semuaproduk/{id}', function($request, $response, $args) use($app, $db){
        $produk = $db->produk()->where('id_produk',$args['id']);
        if($data = $produk->fetch()){
            echo json_encode(array(
                'id_produk' => $data['id_produk'],
                'nama' => $data['nama'],
                'harga' => $data['harga'],
                'status' => $data['status']
                ));
        }
        else{
            echo json_encode(array(
                'status' => false,
                'message' => "ID produk tidak ada"
                ));
        }
    });
    Coba buka localhost/slimteknorial/semuaproduk/2 di browser maka akan muncul seperti berikut.


    – POST
    Kita sudah bisa mengambil data dari database,jika kita ingin menambahkan data ke database, gunakan method POST. Untuk melakukannya tambahkan route baru dibawah route GET sebelumnya.
    //tambah produk baru
    $app->post('/produk', function($request, $response, $args) use($app, $db){
        $produk = $request->getParams();
        $result = $db->produk->insert($produk);
        echo json_encode(array(
            "status" => (bool)$result,
            ));
    
    });
    Kita tidak bisa mencoba method POST di browser,gunakan rest client dengan aplikasi Postman, bisa download di https://www.getpostman.com/ dan pilih chrome App. Buka Postman , pilih method post, masukan URL http://localhost/slimteknorial/produk dan masukan data ingin ditambah ke database. id_produk AUTO_INCREMENT jadi tidak perlu menambahkan id_produk.


    Jika Status true , maka kita berhasil menambahkan data ke database. Buka phpMyAdmin untuk melihat data yang telah kita tambah.

    – PUT
    Sekarang kita akan mencoba mengupdate data yang telah kita post, buat route PUT baru seperti berikut.
    //update produk
    $app->put('/produk/{id}', function($request, $response, $args) use($app, $db){
        $produk = $db->produk()->where("id_produk", $args);
        if($produk->fetch()){
            $post=$request->getParams();
            $result= $produk->update($post);
            echo json_encode(array(
                "status" => (bool) $result,
                "message" => "Produk sudah sukses diupdate "));
        }
        else{
            echo json_encode(array(
                "status" => false,
                "message" => "Produk tidak ada"));
        }
    });
    Pada saat kita mencoba method PUT di Postman dengan encode sebagai form-data, slim tidak bisa mendapatkan nilai dari params, seperti yang dijelaskan dalam W3, jenis konten “multipart/form-data” harus digunakan untuk mengirimkan form yang berisi file, data non-ASCII, dan data biner. Dalam kasus ini, kita harus mengirim data PUT dengan pilihan Postman “x-www-form-urlencoded” (lihat penjelasan “application/x-www-form-urlencoded” di W3).

    Buka phpMyadmin dan lihat id_produk 4 telah berhasil kita edit.


    – DELETE
    Terakhir kita akan mencoba menghapus produk dalam database. Kita aka menggunakan method DELETE untuk menghapus produk. Tambahkan route DELETE seperti berikut.
    //menghapus produk
    $app->delete('/produk/{id}', function($request, $response, $args) use($app, $db){
        $produk = $db->produk()->where('id_produk', $args);
        if($produk->fetch()){
            $result = $produk->delete();
            echo json_encode(array(
                "status" => true,
                "message" => "Produk berhasil dihapus"));
        }
        else{
            echo json_encode(array(
                "status" => false,
                "message" => "Produk id tersebut tidak ada"));
        }
    });
    kita menghapus produk berdasarkan id_produk dalam database dan menggunakan method delete() dari NotORM. Untuk mengujinya fungsi dapat memilih method delete di postman.

      Jika true maka kita berhasil menghapus data dalam database berdasarkan id_produk.

     Berikut Source code keselurahan dari RESTful webservice yang telah kita buat.
    <?php 
    require 'vendor/autoload.php';
    require 'libs/NotORM.php'; 
    //membuat dan mengkonfigurasi slim app
    $app = new \Slim\app;
    
    // konfigurasi database
    $dbhost = 'localhost';
    $dbuser = 'root';
    $dbpass = '';
    $dbname = 'slimteknorialdb';
    $dbmethod = 'mysql:dbname=';
    
    $dsn = $dbmethod.$dbname;
    $pdo = new PDO($dsn, $dbuser, $dbpass);
    $db  = new NotORM($pdo);
    
    //mendefinisikan route app dihome
    $app-> get('/', function(){
        echo "Hello World by slimteknorial";
    });
    
    // Mendapatkan semua data produk 
    $app ->get('/semuaproduk', function() use($app, $db){
        foreach($db->produk() as $data){
            $produk['semuaproduk'][] = array(
                'id_produk' => $data['id_produk'],
                'nama' => $data['nama'],
                'harga' => $data['harga'],
                'status' => $data['status']
                );
        }
        echo json_encode($produk);
    });
    // Mendapatkan salah satu data
    $app ->get('/semuaproduk/{id}', function($request, $response, $args) use($app, $db){
        $produk = $db->produk()->where('id_produk',$args['id']);
        if($data = $produk->fetch()){
            echo json_encode(array(
                'id_produk' => $data['id_produk'],
                'nama' => $data['nama'],
                'harga' => $data['harga'],
                'status' => $data['status']
                ));
        }
        else{
            echo json_encode(array(
                'status' => false,
                'message' => "ID produk tidak ada"
                ));
        }
    });
    //tambah produk baru
    $app->post('/produk', function($request, $response, $args) use($app, $db){
        $produk = $request->getParams();
        $result = $db->produk->insert($produk);
        echo json_encode(array(
            "status" => (bool)$result,
            ));
    
    });
    //update produk
    $app->put('/produk/{id}', function($request, $response, $args) use($app, $db){
        $produk = $db->produk()->where("id_produk", $args);
        if($produk->fetch()){
            $post=$request->getParams();
            $result= $produk->update($post);
            echo json_encode(array(
                "status" => (bool) $result,
                "message" => "Produk sudah sukses diupdate "));
        }
        else{
            echo json_encode(array(
                "status" => false,
                "message" => "Produk id tersebut tidak ada"));
        }
    });
    //menghapus produk
    $app->delete('/produk/{id}', function($request, $response, $args) use($app, $db){
        $produk = $db->produk()->where('id_produk', $args);
        if($produk->fetch()){
            $result = $produk->delete();
            echo json_encode(array(
                "status" => true,
                "message" => "Produk berhasil dihapus"));
        }
        else{
            echo json_encode(array(
                "status" => false,
                "message" => "Produk id tersebut tidak ada"));
        }
    });
    
    //run App
    $app->run();
    
    Kita sudah berhasil membuat RESTful webservice dengan HTTP method GET, POST, PUT, dan DELETE. Ini Awal yang bagus untuk bisa mengembangkan webservice dengan banyak method,route,dan autentikasi untuk keamanan. Untuk Aplikasi REST client bisa belajar di Tutorial Parsing Data JSON dengan Retrofit dan Tutorial ListView dengan Sumber Data JSON, saat ini tutorial aplikasi REST client masih tentang penggunaan method GET. Untuk method lainnya akan menyusul.
    Unknown
    Add Comment
    Wednesday, September 6, 2017

    facebook

    twitter

    google+

    fb share

    About Unknown

    Related Posts
    < Previous Post Next Post >

    Powered by Blogger.

    Weekly Posts

    • PERANGKAT LUNAK PENGOLAH KATA
      Perangkat Lunak Word Processor (selanjutnya disebut pengolah kata) adalah suatu program pengolah dokumen berisi teks dan gambar yang memilik...
    • Membuat Aplikasi WebView di Android Studio
      Membuat Aplikasi WebView di Android Studio. Pada tutorial kali ini, saya akan membahas tentang pemrograman android dimana kita akan mengg...
    • Memulai aplikasi Microsoft Word 2007
      Dalam lingkungan MS Windows kita bisa mengakses sebuah aplikasi Microsoft Word 2007 yang sudah di install, melalui lebih dari satu cara, ant...
    • cara membuat sharing pada Harddisk
      agar Harddisk kita dapat digunakan secara bersama-sama maka harus melakukan perintah sharing ke flashdisk tersebut , dengan cara-cara se...

    About Me

    Unknown
    View my complete profile

    Blog Archive

    • ▼  2017 (17)
      • ►  October (6)
      • ▼  September (11)
        • Memperbaiki AVD yang Tidak Bisa dihapus di Android...
        • Memperbaiki HAX is not Running di Android Studio
        • Membuat WebService dengan Slim Framework
        • Tutorial ListView dengan Sumber Data JSON
        • Tutorial Parsing Data JSON dengan Retrofit
        • Membuat Database SQLite di Aplikasi Android
        • Tutorial Membuat Fragment dalam Activity
        • Membuat Aplikasi WebView di Android Studio
        • Mengenal Activity pada Aplikasi Android
        • Membuat Project Android di Android Studio
        • Mengenal Lebih Dekat dengan Android Studio
    • ►  2016 (21)
      • ►  December (21)

    Social Share

    Like us On Facebook

    Labels

    • Bahasa Program
    • cara membuat sharing pada cd rom
    • cara membuat sharing pada flashdisk
    • cara membuat sharing pada Harddisk
    • Cara memformat flashdisk
    • cd rom
    • debian
    • ENIAC
    • ENIAC Keyboard Computer
    • Flashdisk
    • Format
    • Gejala Kerusakan Internet
    • Gejala Kerusakan Jaringan
    • Gejala Kerusakan Pc
    • Harddisk
    • HDD
    • HTML
    • Jaringan
    • Java
    • Jenis-Jenis Keyboard
    • Keybord zaman dahulu
    • komponen-computer
    • komponen-komponen
    • komponen-komponen computer
    • Komputer
    • Komputer pertama
    • LAN
    • Lan Card
    • linux
    • LOCAL AREA NETWORK
    • Mandriva
    • Membuka File di Microsoft Word
    • menguji jaringan lan
    • Menutup
    • Microsoft Office
    • Microsoft Word
    • Microsoft Word 2007
    • mikrotik
    • Network
    • operating system
    • Operator
    • Password di Microsoft Office
    • Perangkat Lunak Pengolah Kata
    • Program
    • Programming HTML
    • share
    • sharing
    • sistem operasi
    • Software
    • TABEL
    • TOPOLOGI
    • TOPOLOGI LAN
    • Unix
    • windows
    • Wireles Local Area Network
    • WLAN

    Copyright Dunia Program Komputer 2014 . Template Created by