[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"blog-cats-ngidenet":3,"blog-detail-ngidenet-membuat-rest-api-dengan-lumen-part-1":20},{"items":4},[5,9,13,17],{"name":6,"slug":7,"count":8},"Digital Marketing","digital-marketing",41,{"name":10,"slug":11,"count":12},"Programming","programming",56,{"name":14,"slug":15,"count":16},"Tips","tips",75,{"name":18,"slug":19,"count":8},"Web Development","web-development",{"id":21,"slug":22,"title":23,"short_text":24,"excerpt":24,"cover":25,"cover_image":25,"cover_alt_text":25,"category":10,"tags":26,"published_at":27,"created_at":28,"full_text":29,"meta_title":25,"meta_description":30,"faqs":31,"images":32,"views_count":33},412,"membuat-rest-api-dengan-lumen-part-1","Membuat REST API dengan Lumen #part 1","Agus Yusida July 28, 2018 Halo teman ngide! Kali ini kita akan membuat series tutorial bagaimana cara membuat REST API menggunakan Lumen . Untuk yang belum tahu apa itu REST API , kamu bisa membaca ar",null,[],"2019-09-21T16:00:00Z","2026-07-14T04:39:37.669545Z","\u003Cimg alt=\"\" src=\"data:image\u002Fgif;base64,R0lGODlhAQABAIAAAAAAAP\u002F\u002F\u002FyH5BAEAAAAALAAAAAABAAEAAAIBRAA7\"\u002F>  \u003Cimg alt=\"Go to the profile of Agus Yusida\" src=\"http:\u002F\u002F0.gravatar.com\u002Favatar\u002Fc0b0eeb94d5a7fd159a09fd4a506d27b?s=96&amp;d=mm&amp;r=g\"\u002F>  Agus Yusida July 28, 2018\u003Cp>Halo teman ngide! Kali ini kita akan membuat series tutorial bagaimana cara membuat \u003Cem>REST API\u003C\u002Fem> menggunakan \u003Cstrong>\u003Cem>Lumen\u003C\u002Fem>\u003C\u002Fstrong>. Untuk yang belum tahu apa itu \u003Cem>REST API\u003C\u002Fem>, kamu bisa membaca artikel sebelumnya tentang kenalan dengan REST API di sini. Di akhir tutorial ini, kalian diharapkan akan mampu membuat sebuah \u003Cem>REST API\u003C\u002Fem> yang bisa nanti di implementasikan ke project yang sebenarnya.\u003C\u002Fp>\u003Cp>Oke langsung saja ikuti tutorial ini.\u003C\u002Fp>\u003Ch3>Apa itu Lumen?\u003C\u002Fh3>\u003Cp>\u003Cstrong>\u003Cem>Lumen\u003C\u002Fem>\u003C\u002Fstrong> adalah sebuah \u003Cem>micro framework\u003C\u002Fem> yang di kembangkan oleh tim \u003Cstrong>Laravel\u003C\u002Fstrong> yang memang dikhususkan untuk membuat sebuah \u003Cem>REST API\u003C\u002Fem>. Jadi dari segi performanya tidak usah di ragukan lagi. \u003C\u002Fp>\u003Cblockquote>\u003Cp>Lightning fast micro-services and APIs delivered with the elegance you expect. ~ lumen.laravel.com\u003C\u002Fp>\u003C\u002Fblockquote>\u003Cp>Ada beberapa alasan kenapa memilih \u003Cstrong>\u003Cem>Lumen\u003C\u002Fem>\u003C\u002Fstrong> dibandingkan \u003Cem>micro framework\u003C\u002Fem> lainnya:\u003C\u002Fp> \u003Cul>\u003Cli>\u003Cstrong>\u003Cem>Lumen\u003C\u002Fem>\u003C\u002Fstrong> itu cepat.\u003C\u002Fli>\u003Cli>Mampu menghadle lebih banyak \u003Cem>request\u002Fsecond\u003C\u002Fem> dibandingkan bapaknya yaitu Laravel dan micro framework lainnya.\u003C\u002Fli>\u003Cli>Menggunakan \u003Cstrong>\u003Cem>nikic\u002FFastRoute\u003C\u002Fem>\u003C\u002Fstrong> untuk routing\u003C\u002Fli>\u003Cli>Ada command \u003Cstrong>Artisan\u003C\u002Fstrong> untuk mempercepat proses development\u003C\u002Fli>\u003Cli>Im big fans of laravel stuff (LOL)\u003C\u002Fli>\u003C\u002Ful>\u003Ch3>Install Lumen\u003C\u002Fh3>\u003Cp>Untuk cara install lumen yang lebih lengkap kamu bisa mengunjungi dokumentasi di website lumen.\u003C\u002Fp>\u003Cp>Buka terminal kesayangan kamu, dan pergi ke root folder project misalnya di folder htdocs dan jalankan perintah di bawah ini:\u003C\u002Fp>\u003Cpre>\u003Ccode>composer create-project --prefer-dist laravel\u002Flumen  online-store\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>Tunggu sampai proses install selesai, maka kamu akan mendapati sebuah folder baru dengan nama \u003Cstrong>\u003Cem>online-store\u003C\u002Fem>\u003C\u002Fstrong> di \u003Cem>root\u003C\u002Fem> project kamu. Masuk ke folder itu lewat terminal dan jalankan command php artisan untuk mengecek apakah lumen sudah terinstall dengan baik.\u003C\u002Fp>\u003Cfigure>\u003Cimg alt=\"\" src=\"data:image\u002Fgif;base64,R0lGODlhAQABAIAAAAAAAP\u002F\u002F\u002FyH5BAEAAAAALAAAAAABAAEAAAIBRAA7\"\u002F>\u003C\u002Ffigure>\u003Ch3>Buat database dan edit config file\u003C\u002Fh3>\u003Cp>Selanjutnya kita akan membuat sebuah database dengan nama \u003Cstrong>\u003Cem>online-store\u003C\u002Fem>\u003C\u002Fstrong>. \u003C\u002Fp>\u003Cp>Edit file.env dan ganti bagian yang di bawah ini sesuaikan dengan pengaturan user database di komputer kamu ya.\u003C\u002Fp>\u003Cpre>\u003Ccode>DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=online-store DB_USERNAME=root DB_PASSWORD=root\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>[Opsional] Sebaiknya kita membuat sebuah key dulu agar aplikasi kita lebih secure ya. Caranya kamu bisa generate random string dengan fungsi str_random(32); dan copy ke bagian key di dalam .env.\u003C\u002Fp>\u003Ch3>Buat Migration\u003C\u002Fh3>\u003Cp>Kemudian kita akan membuat 2 buah \u003Cem>migration\u003C\u002Fem> untuk beberapa table yang akan ada di dalam aplikasi online-store ini. Caranya jalankan perintah di bawah ini:\u003C\u002Fp>\u003Cpre>\u003Ccode>php artisan make:migration Products\u003C\u002Fcode>\u003C\u002Fpre>\u003Cpre>\u003Ccode>php artisan make:migration Categories\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>Kamu bisa buka folder \u003Cem>database\u002Fmigrations\u003C\u002Fem> dan edit masing-masing file \u003Cem>migration\u003C\u002Fem> tersebut. Tambahkan code di bagian function up()  seperti di bawah ini:\u003C\u002Fp>\u003Cpre>\u003Ccode>\u002F\u002FProductTable migration Schema::create('products',function(Blueprint $table){             $table-&gt;increments('id');             $table-&gt;string('name');             $table-&gt;integer('category_id');             $table-&gt;string('slug');             $table-&gt;integer('price');             $table-&gt;integer('weight');             $table-&gt;text('description');             $table-&gt;timestamps();         });\u003C\u002Fcode>\u003C\u002Fpre>\u003Cpre>\u003Ccode>\u002F\u002FCategortTable migration Schema::create('categories',function(Blueprint $table){             $table-&gt;increments('id');             $table-&gt;string('name');                  });\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>Sekarang jalankan perintah \u003Cem>artisan:migrate\u003C\u002Fem> untuk membuat table diatas di database yang sudah kita buat.\u003C\u002Fp>Rekomendasi:  Apa itu REST api? Pengertian, Kelebihan dan Kekurangannya.\u003Cfigure>\u003Cimg alt=\"\" src=\"data:image\u002Fgif;base64,R0lGODlhAQABAIAAAAAAAP\u002F\u002F\u002FyH5BAEAAAAALAAAAAABAAEAAAIBRAA7\"\u002F>\u003C\u002Ffigure>\u003Ch3>Buat Model dan Controller\u003C\u002Fh3>\u003Cp>Buat 2 buah file model di dalam folder app dengan nama Product.php dan Category.php dan isi masing-masing dengan code di bawah ini:\u003C\u002Fp>\u003Cp>\u003Cstrong>Product.php\u003C\u002Fstrong>\u003C\u002Fp>\u003Cpre>\u003Ccode>&lt;?php namespace App; use IlluminateDatabaseEloquentModel; class Product extends Model {     protected $fillable = ['name','category_id','slug','price','weight','description'];     protected $dates = [];     public static $rules = [         'name' =&gt; 'required',         'category_id' =&gt; 'required',         'slug' =&gt; 'required',         'price' =&gt; 'required',         'weight' =&gt; 'required',         'description' =&gt; 'required',     ]; } \u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>\u003Cstrong>Category.php\u003C\u002Fstrong>\u003C\u002Fp>\u003Cpre>\u003Ccode>&lt;?php namespace App; use IlluminateDatabaseEloquentModel; class Category extends Model {     protected $fillable = ['name'];     public $timestamps = false;     public static $rules = [         'name' =&gt; 'required'     ]; } \u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>Selanjutnya buat 2 buah file controller di dalam folder app\u002FHttp\u002FControllers yaitu ProductController.php dan CategoryController.php\u003C\u002Fp>\u003Cp>\u003Cstrong>ProductController.php\u003C\u002Fstrong>\u003C\u002Fp>\u003Cpre>\u003Ccode>&lt;?php namespace AppHttpControllers; use AppProduct; use IlluminateHttpRequest; class ProductController extends Controller  {     public function index()     {         $products = Product::all();         return response()-&gt;json($products);     }     public function store(Request $request)     {         Product::create($request-&gt;all());         return response()-&gt;json([             'message' =&gt; 'Successfull create new product'         ]);     }     public function show($id)     {         $product = Product::find($id);         return response()-&gt;json($product);     }     public function update(Request $request, $id)     {         $product = Product::find($id);         $product-&gt;update($request-&gt;all());         return response()-&gt;json([             'message' =&gt; 'Successfull update product'         ]);     }     public function delete($id)     {         Product::destroy($id);         return response()-&gt;json([             'message' =&gt; 'Successfull delete product'         ]);     } } \u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>\u003Cstrong>CategoryController.php\u003C\u002Fstrong>\u003C\u002Fp>\u003Cpre>\u003Ccode>&lt;?php namespace AppHttpControllers; use AppCategory; use IlluminateHttpRequest; class CategoryController extends Controller {     public function index()     {         $categories = Category::all();         return response()-&gt;json($categories);     }     public function store(Request $request)     {         Category::create($request-&gt;all());         return response()-&gt;json([            'message' =&gt; 'Successfull create new category'         ]);     }     public function show($id)     {         $category = Category::find($id);         return response()-&gt;json($category);     }     public function update(Request $request, $id)     {         $category = Category::find($id);         $category-&gt;update($request-&gt;all());         return response()-&gt;json([             'message' =&gt; 'Successfull update category'         ]);     }     public function delete($id)     {         Category::destroy($id);         return response()-&gt;json([             'message' =&gt; 'Successfull delete category'         ]);     } }\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>Sebelum bisa menggunakan model di atas, kita harus mengaktifkan fungsi Eloquent dari lumen. Caranya buka file\u003C\u002Fp> \u003Cp>\u003Ccode>bootstrap\u002Fapp.php\u003C\u002Fcode> dan hapus comment (tanda #) di depan \u003Ccode>$app-&gt;withEloquent();\u003C\u002Fcode>\u003C\u002Fp>\u003Cp>Dari masing-masing file controller di atas, kita memiliki fungsi index, store,show, update dan delete yang nanti akan berfungsi untuk menghadle CRUD dari masing-masing object Product dan Category\u003C\u002Fp>Rekomendasi:  Membuat REST API dengan Lumen: Authentication dengan JWT Auth\u003Ch3>Membuat API Routes\u003C\u002Fh3>\u003Cp>Kita akan membuat routing untuk menghadle CRUD dengan prefix api. Buka file web.php di dalam folder routes lalu tambahkan code di bawah ini:\u003C\u002Fp>\u003Cpre>\u003Ccode>$app-&gt;group(['prefix' =&gt; 'api'], function () use ($app) {     \u002F\u002Fproduct route     $app-&gt;get('products', 'ProductController@index');     $app-&gt;get('products\u002F{id}', 'ProductController@show');     $app-&gt;post('products', 'ProductController@store');     $app-&gt;put('products\u002F{id}', 'ProductController@update');     $app-&gt;delete('products\u002F{id}', 'ProductController@delete');     $app-&gt;get('categories', 'CategoryController@index');     $app-&gt;get('categories\u002F{id}', 'CategoryController@show');     $app-&gt;post('categories', 'CategoryController@store');     $app-&gt;put('categories\u002F{id}', 'CategoryController@update');     $app-&gt;delete('categories\u002F{id}', 'CategoryController@delete'); });\u003C\u002Fcode>\u003C\u002Fpre>\u003Ch3>Testing REST API\u003C\u002Fh3>\u003Cp>Untuk testing api yang sudah kita buat, kamu bisa menggunakan Postman. Jalankan PHP server untuk api yang sudah kita buat di localhost dengan menjalankan perintah di bawah ini:\u003C\u002Fp>\u003Cpre>php -S localhost:8000 -t public\u003C\u002Fpre>\u003Cp>Sekarang mengakses REST API di alamat localhost:8000\u003C\u002Fp>\u003Ch4>Test CRUD untuk produk\u003C\u002Fh4>\u003Cp>Buat produk baru. Kamu bisa menambah produk baru dengan mengakses \u002Fapi\u002Fproducts dengan method POST. Lengkapi juga data body yang dibutuhkan. Jika berhasil maka akan mendapatkan response seperti dibawah ini.\u003C\u002Fp>\u003Cfigure>\u003Cimg alt=\"\" src=\"data:image\u002Fgif;base64,R0lGODlhAQABAIAAAAAAAP\u002F\u002F\u002FyH5BAEAAAAALAAAAAABAAEAAAIBRAA7\"\u002F>\u003C\u002Ffigure>\u003Cp>Kita test juga validasi dengan menghapus beberapa field dari request body\u003C\u002Fp>\u003Cfigure>\u003Cimg alt=\"\" src=\"data:image\u002Fgif;base64,R0lGODlhAQABAIAAAAAAAP\u002F\u002F\u002FyH5BAEAAAAALAAAAAABAAEAAAIBRAA7\"\u002F>\u003C\u002Ffigure>\u003Cp>\u003Cstrong>List semua produk\u003C\u002Fstrong>\u003C\u002Fp>\u003Cp>Untuk mengakses semua produk yang sudah dibuat, kita bisa mengaksesnya lewat \u002Fapi\u002Fproducts dengan method GET seperti di bawah ini.\u003C\u002Fp>\u003Cfigure>\u003Cimg alt=\"\" src=\"data:image\u002Fgif;base64,R0lGODlhAQABAIAAAAAAAP\u002F\u002F\u002FyH5BAEAAAAALAAAAAABAAEAAAIBRAA7\"\u002F>\u003C\u002Ffigure>\u003Cp>\u003Cstrong>Tampilkan satu produk\u003C\u002Fstrong>\u003C\u002Fp>\u003Cp>Untuk menampilkan satu data, kamu bisa mengakses \u002Fapi\u002Fproducts\u002F{id}, dimana id adalah id dari produk yang akan kita cari.\u003C\u002Fp>\u003Cfigure>\u003Cimg alt=\"\" src=\"data:image\u002Fgif;base64,R0lGODlhAQABAIAAAAAAAP\u002F\u002F\u002FyH5BAEAAAAALAAAAAABAAEAAAIBRAA7\"\u002F>\u003C\u002Ffigure>\u003Cp>\u003Cstrong>Edit produk\u003C\u002Fstrong>\u003C\u002Fp>\u003Cp>Untuk mengedit produk, kamu bisa mengakses \u002Fapi\u002Fproducts\u002F{id}, dengan body request yang akan kita edit. Kamu bisa lihat contoh di bawah ini:\u003C\u002Fp>\u003Cfigure>\u003Cimg alt=\"\" src=\"data:image\u002Fgif;base64,R0lGODlhAQABAIAAAAAAAP\u002F\u002F\u002FyH5BAEAAAAALAAAAAABAAEAAAIBRAA7\"\u002F>\u003C\u002Ffigure>\u003Cp>\u003Cstrong>Delete produk\u003C\u002Fstrong>\u003C\u002Fp>\u003Cp>Untuk menghapus satu produk, kamu bisa mengakses \u002Fapi\u002Fproducts\u002F{id} dengan method DELETE.\u003C\u002Fp>\u003Cfigure>\u003Cimg alt=\"\" src=\"data:image\u002Fgif;base64,R0lGODlhAQABAIAAAAAAAP\u002F\u002F\u002FyH5BAEAAAAALAAAAAABAAEAAAIBRAA7\"\u002F>\u003C\u002Ffigure>\u003Cp>Kamu bisa melakukan test untuk kategori dengan cara yang sama seperti di atas.\u003C\u002Fp>\u003Ch2>Kesimpulan\u003C\u002Fh2>\u003Cp>Jadi dalam tutorial ini kita sudah berhasil membuat sebuah simple REST API dengan menggunakan Lumen. Kita sudah belajar membuat model dan controller dan juga membuat routing untuk proses CRUD. Kita juga berhasil melakukan testing api yang kita buat menggunakan Postman.\u003C\u002Fp>\u003Cp>Ditutorial selanjutnya kita akan menambahkan bagaimana cara implementasi authetikasi sehingga api kita hanya bisa diakses oleh user tertentu saja.\u003C\u002Fp>Please follow and like us:\u003Ca href=\"http:\u002F\u002Fwww.specificfeeds.com\u002Fwidgets\u002FemailSubscribeEncFeed\u002FUmN5cWduWHlmN09VS1JQcFMrLzFJODRBMlMxY3R4RWlzQnFqb2REQlVwRWxodzRTT3NLYTNxQ2FUbzFvSkJTM2hFMU9SOVdWdGNiSlF0N3ZFMjdqR1A0U2VoL0tFYXdjb1JOUnRldUlqd2ZHYU84K2lvQXZ4aHNXQ3hYZ2g2N018RlF5OExKZXdlaW1QWllodDc3c3ZscmliQ1pDaTFBSFdTWUQ3MElieVNIST0=\u002FOA==\u002F\">\u003Cimg src=\"data:image\u002Fgif;base64,R0lGODlhAQABAIAAAAAAAP\u002F\u002F\u002FyH5BAEAAAAALAAAAAABAAEAAAIBRAA7\"\u002F>\u003C\u002Fa>\u003Ca href=\"http:\u002F\u002Ftwitter.com\u002Fshare\">\u003C\u002Fa>\u003Ca href=\"https:\u002F\u002Fwww.pinterest.com\u002Fpin\u002Fcreate\u002Fbutton\u002F?url=&amp;media=&amp;description=\">\u003C\u002Fa> Tags: lumen Rest Api","Agus Yusida July 28, 2018 Halo teman ngide! Kali ini kita akan membuat series tutorial bagaimana cara membuat REST API menggunakan Lumen . Untuk yang belum tahu",[],[],0]