Laravel 7 Backend API and VueJS Simple CRUD

Tutorial kali ini akan membahas cara membuat CRUD sederhana dengan Laravel 7 sebagai backend API dan VueJS sebagai frontendnya. Pertama kali kita harus menginstall laravel 7 terlebih dahulu :

Selanjutnya kita akan membuat model, seeder, dan factory untuk Post, karena kita akan membuat crud sederhana yang berisi satu tabel Post dengan title dan content sebagai atributnya.

Install mysql di komputer, kemudian buat satu database baru, kita beri nama ‘laravel’.

Copy file .env.example dan beri nama .env, kemudian tambahkan informasi database di dalamnya.

Nantinya, di dalam database kita akan membuat table Post yang isinya title dan content. Buka database/factories/PostFactory.php dan modifikasi menjadi seperti ini :

Buka database/migrations/…create_posts_table.php dan tambahkan title dan content :

Buka database/seeds/PostSeeder.php dan tambahkan factory yang sudah kita buat :

Tambahkan PostSeeder pada database/seeds/DatabaseSeeder.php.

Jalankan migrasi dan seeder untuk membuat tabel di database ‘laravel’ dan insert data pada tabel posts :

Selanjutnya, buat Post Controller :

Buka route/api.php kemudian tambahkan api route ke PostController :

Bagian 1 – Laravel Backend dengan API Resource

1. Laravel API – GET all Posts

Sekarang saatnya untuk membuat API untuk Posts. Yang pertama kita buat adalah mendapatkan data semua post dari tabel posts.

Pertama kali, kita buat PostResource. Resource ini akan mengatur bagaimana nantinya kita akan menampilkan data.

Buka App/Http/Controllers/PostController dan tambahkan kode berikut pada bagian index untuk menampilkan seluruh post beserta pagination nya :

Jalankan server dari working directory :

Untuk menampilkan hasilnya, kita akan menggunakan Postman. Jika belum memiliki postman di dalam komputer, silahkan diinstall dulu, gratis.

Buka Postman, dan pilih method GET, masukkan url nya : localhost:8000/api/posts kemudian tekan Send.

Di bagian bawah, jika berhasil kita akan melihat data posts dari database. Karena kita menggunakan resource, maka akan ditampilkan juga informasi pagination yang akan berguna saat kita akan membuat pagination di frontend nantinya.

Dengan Resource dari laravel, kita juga bisa memilih data apa saja yang ditampilkan. Misalnya kita tidak ingin menampilkan data created_at dan updated_at, maka tinggal melakukan modifikasi pada PostResource.php :

2. Laravel API – GET Single Post

Bagian berikutnya adalah menampilkan post berdasarkan id nya. Buka PostController.php dan tambahkan kode berikut pada function show() :

Buka Postman, dan masukkan url berikut untuk menampilkan post dengan id = 7 localhost:8000/api/post/7. Silahkan coba dengan mengganti nomor id nya.

Klik send, maka akan muncul data post dengan id = 7.

Sebagai pilihan, jika kita tidak ingin menampilkan ‘data’ pada hasil pemanggilan API, kita bisa memodifikasi app/Providers/AppServiceProvider.php 

Sehingga ketika kita melakukan pemanggilan data API, key ‘data’ tidak lagi muncul :

Bandingkan dengan data pemanggilan sebelumnya. Namun pada tutorial ini, kita tetap akan menggunakan key ‘data’ untuk selanjutnya, sehingga perubahan pada kode yang sebelumnya dilakukan pada AppServiceProvider, akan dikembalikan lagi ke semula.

Dengan Resource, kita juga dapat menampilkan data tambahan. Misalnya kita ingin menampilkan versioning atau url. Modifikasi PostResource, dan tambahkan function with :

3. Laravel 7 API – POST post

Selanjutnya kita akan menambahkan post. Buka PostController.php dan tambahkan pada method store:

Buka postman dan pilih method POST, kemudian masukkan url localhost:8000/api/post. Selanjutnya, pada tab body, pilih raw, dan pilih JSON pada dropdown di kanan. Masukkan title dan content sebagai body, sesuai format json. Jika berhasil menambahkan data, maka akan muncul di bagian bawah.

Secara otomatis, status code sudah ditentukan oleh Resource, misalnya untuk POST, maka status code nya adalah 201 (created). Jika kita ingin melakukan modifikasi statusCodenya, panggil response() dan setStatusCode pada saat menambahkan/edit/delete di controller :

4. Laravel 7 API – PUT post

Selanjutnya, kita akan menggunakan method PUT untuk melakukan update post. Buka PostController.php dan karena kita menggunakan method store sama dengan ketika menambahkan data, makan modifikasi method ini :

Jika methodnya adalah PUT, maka sistem akan mencari di database tabel post dengan id sesuai dengan post_id nya. Buka postman, pilih PUT dan masukkan urlnya.

5. Laravel 7 API – DELETE post

Selanjutnya adalah yang paling mudah, yaitu melakukan delete post. Tambahkan method destroy pada PostController.php 

Buka Postman, pilih DELETE dan masukkan url nya.

Laravel API DELETE

Bagian 2 – Laravel Frontend dengan VueJS

Selanjutnya, kita akan melanjutkan untuk menampilkan halaman frontend dengan VueJS. Pertama tama kita akan melakukan instalasi laravel ui melalui terminal. Masuk ke folder working directory, ketik:

Setelah instalasi selesai, kita akan menginstall lagi vuejs sekaligus authentikasi.

Selanjutnya, kita akan membuat Vue component yang pertama dengan modifikasi file resources\js\app.js 

Kemudian buat PostComponent.vue pada folder resources/js/components

Dan ubah welcome.blade.php menjadi seperti ini :

Selanjutnya untuk mengaktifkan vue, jalankan perintah berikut pada terminal :

Aktifkan server (php artisan serve), dan buka hasilnya pada browser :

1. Menampilkan Post pada Vue Component

Berikutnya, kita akan memulai untuk menampilkan data di PostComponent.vue. Kita akan sekaligus membuat pagination, karena itu buka PostController dan modifikasi method index()  untuk menampilkan berdasarkan record yang terbaru :

Untuk keperluan navigasi, kita akan membuat navbar component. Buka resources/js/app.js dan tambahkan navbar component :

Buat NavbarComponent.php di dalam folder resources/js/components 

Letakkan komponen navbar di halaman welcome.blade.php, kemudian kita juga akan menambahkan bootstrap untuk tampilannya, sehingga welcome.blade.php menjadi :

Di PostController, kita akan menambahkan beberapa method untuk menampilkan data saat pertama kali component Post ditampilkan. Tambahkan di bagian <script> menjadi seperti ini :

Refresh browser, maka data yang sudah disediakan lewat API akan muncul di console :

Saatnya kita modifikasi Post Component untuk menampilkan data. Di bagian template, kita akan menambahkan table dengan 3 kolom yaiut title, content, dan action.

Di bagian script pada PostComponent, kita akan menginputkan nilai dari api ke variable posts.

Refresh browser, maka seperti ini hasilnya ;

Menambahkan Pagination

Selanjutnya, kita akan menambahkan pagination pada PostComponent. Modifikasi bagian template untuk menampilkan pagination. Pagination section ini akan menunjukkan kita berada di halaman berapa dari total berapa halaman, kemudian ada tombol next dan previous. Jika berada di halaman pertama, tombol prev akan disabled, dan jika berada di halaman terakhir, tombol next akan disabled.

Modifikasi pula bagian script methods :

Begini hasilnya :

2. Delete Post

Kita akan melanjutkan dengan method yang paling mudah dulu, yaitu Delete Post.

Di PostComponent, Tambahkan event @click ketika tombol Delete ditekan dan akan diarahkan ke method deletePost:

Selanjutnya di bagian method, tambahkan deletePost :

Refresh ulang browser, kemudian coba untuk menghapus satu post :

3. Create POST

Selanjutnya di PostComponent kita akan menambahkan form untuk create post baru.

Lalu di bagian methods, tambahkan addPost :

Refresh browser, kemudian coba tambahkan satu buah post:

4. Update Post

Bagian terakhir, kita akan mengupdate post yang sudah ada. Modifikasi PostComponent, berikan event @click ketika tombol edit ditekan.

Selanjutnya, modifikasi method addArticle di bagian update, kemudian tambahkan editPost() method, sehingga bagian script pada PostComponent menjadi seperti ini :

Refresh ulang browser, kemudian coba untuk mengedit satu post.

Di tutorial ini, kita sudah berhasil membuat laravel vue CRUD mulai dari membuat backend API, kemudian menampilkannya di frontend menggunakan Vue JS. Aplikasi ini masih sangat sederhana, dan banyak sekali ruang pengembangan, misalnya membuat authentikasi, alert menggunakan sweet alert, dan yang lain. Meski demikian, semoga tutorial yang terlihat panjang tapi sebenarnya sederhana ini bisa membantu teman-teman semua untuk mempelajari laravel dan VueJS ya!

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.