Module Beginner 5 November 2017

Tutorial Laravel 5.4 —RESTful API

Halo! Pada kali ini gue mau ngajarin kalian tutorial cara buat REST API.

Tutorial Laravel 5.4 —RESTful API

Image Halo! Pada kali ini gue mau ngajarin kalian tutorial cara buat REST API.

Kenapa judul gue RESTful API tapi kalimat diatas REST API ? Sama aja bro RESTful API / REST API tuh satu nama yang sama, beda singkatan aja hehe.

Apa itu REST API ?

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. — Developer KudoPengertian lebih lanjut cek aja ke link si Developer Kudo.

Sebelumnya kalian harus punya POSTMAN dulu, apa itu POSTMAN ? Itu software untuk meriksa apakah data yang dikirim atau diterima udah sesuai lewat REST API.Download POSTMAN https://www.getpostman.com

Kalo kalian pake Google Chrome tinggal download extensionnya aja, ada loh.

Oke langsung cus aja yuk!

Kita akan buat ini dari awal, jadi kalo kamu udah ngikutin tutorial saya CRUDdisini, pasti lu udah ada database dan table bernama ‘kontak’ nah disini gue akan pandu dari awal lagi biar enak (padahal karena xampp gue keapus pas ngetes PHP 7 wkwkwk).

Pertama, bikin dulu projectnya ye, pasti ngerti kan?

Kalo udah langsung aja buat model kontak.

php artisan make:model Kontak —migrationudah? buka database -> migrations dan pastinya dong akan muncul satu file baru.

Hapus dua file yaitu create_user sama create_password reset. Hapus aja pokoknya, kita gapake.

benerin nih isi file create_kontaks_table pake kode dibawah ini

increments('id'); $table->string('nama'); $table->string('email'); $table->string('alamat'); $table->string('nohp'); $table->timestamps(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('kontak'); }}Kalo udah dibuat berarti sekarang kita jalanin migrationnya php artisan migrateThanks untuk agan [Sumintar Hadisiswoyo](https://medium.com/@sumintar) sudah mengingatkan untuk migrate.kalo udah masuk ke **database -> seeder **dan edit file **DatabaseSeeder.php** call(UsersTableSeeder::class); $faker = Faker\Factory::create(); //import library faker $limit = 20; //batasan berapa banyak data for ($i = 0; $i < $limit; $i++) { DB::table('kontak')->insert([ //mengisi datadi database 'nama' => $faker->name, 'email' => $faker->unique()->email, //email unique sehingga tidak ada yang sama 'nohp' => $faker->phoneNumber, 'alamat' => $faker->address, ]); } }}Udah? sekarang jalanin aja dengan kode dibawah php artisan db:seedoke sekarang kita udah siap! edit Model Kontak.php di App\Kontak dan tambahin kode dibawah 0){ *//mengecek apakah data kosong atau tidak *$res[**'message'**] = **"Success!"**; $res[**'values'**] = $data; **return **response($res); } **else**{ $res[**'message'**] = **"Empty!"**; **return **response($res); }}jelasin dulu nih : - $data berarti kita set variable data yang akan manggil model Kontak secara menyeluruh isinya (select * from kontak). - if(count($data) > 0) berarti kita ngecek apabila data di table kontak lebih dari 0 (gak kosong) maka dia akan nampilin sukses dan datanya, tapi kalo kosong ya nampilin tulisan empty. Sekarang buka **routes->web.php** dan tambahin kode dibawah Route::*get*(**'/kontak'**,**'ControllerKontak@index'**);Sekarang jalanin servernya php artisan serveSekarang buka POSTMAN kalian dan masuk ke **localhost:8000/kontak** ![Image](https://cdn-images-1.medium.com/max/800/1*R67KXbj926XgW3Wg-Uqo1A.png) udah bisa kan? manjiw (Mantap Jiwa) dong! Tapi baru View nih. Sekarang prepare untuk View by ID gan! Edit ControllerKontak.php dan tambahin kode dibawah kalau belum ada! **public function **show($id){ $data = \App\Kontak::*where*(**'id'**,$id)->get(); **if**(*count*($data) > 0){ *//mengecek apakah data kosong atau tidak *$res[**'message'**] = **"Success!"**; $res[**'values'**] = $data; **return **response($res); } **else**{ $res[**'message'**] = **"Failed!"**; **return **response($res); }}Dia akan mencari dimana ID sama seperti ID yang dicari melalui URL Sekarang masukin routesnya dibawah. Route::*get*(**'/kontak/{id}'**,**'ControllerKontak@show'**);Kalo berhasil nanti kaya gini ![Image](https://cdn-images-1.medium.com/max/800/1*e6TEz2DpP0xEhih_qyr8Ug.png) ![Image](https://cdn-images-1.medium.com/max/800/1*UJHkJGElwp8y3ZHbIat71A.png) Udah berhasil View by ID? Sekarang prepare untuk Create. Buka ControllerKontak.php lagi dan sekarang tambahin method store. **public function **store(Request $request){ $nama = $request->input(**'nama'**); $email = $request->input(**'email'**); $nohp = $request->input(**'nohp'**); $alamat = $request->input(**'alamat'**); $data = **new **\App\Kontak(); $data->**nama **= $nama; $data->**email **= $email; $data->**nohp **= $nohp; $data->**alamat **= $alamat; **if**($data->save()){ $res[**'message'**] = **"Success!"**; $res[**'value'**] = **"**$data**"**; **return **response($res); }}Tuh tulisannya **if($data->save())** berarti jika dia sukses ngesave dia akan nampilin kalimat sukses. Sekarang tambahin di routesnya. Route::*post*(**'/kontak/store'**,**'ControllerKontak@store'**);Eits jangan dicoba dulu, kita harus matiin VerifyCSRFToken.php dulu, fungsinya apasih tuh bikin ribet aja. Nih berdasarkan kata Laravel Laravel makes it easy to protect your application from [cross-site request forgery](https://en.wikipedia.org/wiki/Cross-site_request_forgery) (CSRF) attacks. Cross-site request forgeries are a type of malicious exploit whereby unauthorized commands are performed on behalf of an authenticated user.Intinya buat pengamanan gan jadi jangan salahin Laravel! Matiin dulu yuk, caranya gini. Masuk ke **App/Http/Middleware** dan edit **VerifyCsrfToken.php** pada bagian except ganti dengan kode dibawah **protected $except **= [ *// ***'*/'**];fungsinya biat setiap URL akan dilewatin buat ngecek CSRF Token. dah? sekarang agan bisa ngetes deh buat masukkin data. nih caranya dibawah ![Image](https://cdn-images-1.medium.com/max/800/1*i27AMDczfCXAnSCgQksU_A.png) Jika kalian berhasil maka akan muncul tuh kata sukses! Sekarang kalian cek bener gak tuh datanya udah masuk, coba kita view all data. ![Image](https://cdn-images-1.medium.com/max/800/1*5edGzxvmMrFsWgT70uXLcg.png) Masuk gan! Berarti kita dah berhasil store nih. Berarti sekarang saatnya Update nih! Edit file ControllerKontak.php lagi dan tambahin fungsi Update. **public function **update(Request $request, $id){ *// *$nama = $request->input(**'nama'**); $email = $request->input(**'email'**); $nohp = $request->input(**'nohp'**); $alamat = $request->input(**'alamat'**); $data = \App\Kontak::*where*(**'id'**,$id)->first(); $data->**nama **= $nama; $data->**email **= $email; $data->**nohp **= $nohp; $data->**alamat **= $alamat; **if**($data->save()){ $res[**'message'**] = **"Success!"**; $res[**'value'**] = **"**$data**"**; **return **response($res); } **else**{ $res[**'message'**] = **"Failed!"**; **return **response($res); }}Kalo udah jangan lupa tambahin di routesnya lagi. Route::*post*(**'/kontak/update/{id}'**,**'ControllerKontak@update'**);Sekalian deh ama fungsi destroy (delete data) biar gak lama wkwkwk **public function **destroy($id){ $data = \App\Kontak::*where*(**'id'**,$id)->first(); **if**($data->delete()){ $res[**'message'**] = **"Success!"**; $res[**'value'**] = **"**$data**"**; **return **response($res); } **else**{ $res[**'message'**] = **"Failed!"**; **return **response($res); }}Tambahin juga routesnya Route::*post*(**'/kontak/delete/{id}'**,**'ControllerKontak@destroy'**);Setelah ditambahkan mari kita cek bebi cek! Gue akan mencoba mengupdate nama gue dari Keren jadi Ganteng. Caranya gini ![Image](https://cdn-images-1.medium.com/max/800/1*0CUL7VrZfzIg6-E_hrtu7g.png) masukkan URL diatas dan tulis ID sesuai ID kalian. Tinggal langsung diubah aja isi body nya. Kalo berhasil nanti akan berubah ![Image](https://cdn-images-1.medium.com/max/800/1*y2QsAp2Lh_nGkBj-KxixlA.png) **Buat yang bingung kenapa tadi ID gue 22 sekarang 23, karena tadi gue ngetes delete data dulu hehehe. Emang gapenting sih, tapi siapa tau ada yang engeh loh.**Untuk menghapus data caranya masih sama, tinggal gini aja ![Image](https://cdn-images-1.medium.com/max/800/1*6uluATfGvWwDmUKSL06Ztg.png) ## **Perbedaannya, Body nya gausah diisi.** ![Image](https://cdn-images-1.medium.com/max/800/1*Z8mTo4yT_aYWGaRwGFIyBw.png) Kalo berhasil nanti nama gue yang Ganteng tadi akan menghilang. Oke sekian tutorial Laravel 5.4 — REST API dari gue semoga bermanfaat, kritik saran dan kalo ada yang bingung bisa langsung komen dibawah! ## **Happy Coding!** --- *Artikel ini merupakan konten legacy dari blog Medium (Tahun 2017). Beberapa konsep atau sintaks mungkin sudah mengalami perubahan pada versi terbaru.*