Seri ini membahas cara membangun REST API menggunakan Goravel, framework web berbasis Golang yang terinspirasi dari Laravel. Materi mencakup instalasi, routing, controller, model, database migration, autentikasi, validasi, hingga membahas mengenai best practice dalam membuat API.
Pada bagian ini akan dibahas mengenai Routing Dasar, Controller, Response JSON, dan struktur dasar API tanpa database.
Di sini akan dibahas mengenai beberapa hal dasar di Goravel yang berkaitan dengan database.
Di sesi ini, kita akan membahas bagaimana menghubungkan Goravel dengan database dan mulai bekerja dengan data menggunakan fitur bawaan framework:
Melengkapi PostController dengan method Store, Update, dan Destroy, lengkap dengan validasi input sebelum data disimpan ke database.
Memasang Air, live-reload tool untuk aplikasi Go, supaya server otomatis restart setiap ada perubahan kode saat development.
Menambahkan endpoint Register dan Login, sekaligus generate JWT Token menggunakan golang-jwt dan bcrypt untuk hashing password.
Membuat middleware untuk memvalidasi JWT token dan melindungi endpoint Create, Update, dan Delete Post agar hanya bisa diakses user yang sudah login.
Merapikan format response API supaya konsisten (success/message/data), plus menangani endpoint yang tidak ditemukan lewat Fallback route.
Menambahkan pagination dan fitur search sederhana ke endpoint list post menggunakan method Paginate bawaan Goravel ORM.
Menghubungkan Post dengan User sebagai penulisnya, sekaligus menambahkan proteksi supaya user hanya bisa mengubah/menghapus post miliknya sendiri.
Menambahkan fitur Comment: user yang login bisa berkomentar di sebuah post, siapa saja boleh membaca daftar komentarnya.
Menambahkan relasi many-to-many antara Post dan Category menggunakan fitur Association di Goravel ORM.
Menambahkan fitur upload gambar untuk post menggunakan filesystem abstraction bawaan Goravel.
Menambahkan refresh token berumur panjang plus endpoint Logout untuk mencabutnya, melengkapi sistem autentikasi JWT kita.
Menambahkan sistem role sederhana (user dan admin) beserta middleware dan proteksi kepemilikan yang bisa dilewati admin.
Menulis automated feature test untuk endpoint auth dan post menggunakan tooling testing bawaan Goravel.
Menambahkan caching sederhana pada endpoint detail post menggunakan cache driver memory bawaan Goravel.
Memindahkan pekerjaan yang tidak perlu selesai saat request berlangsung ke queue, diproses asynchronous lewat worker terpisah.
Menambahkan rate limiting untuk melindungi endpoint login dari brute-force dan API secara umum dari penyalahgunaan.
Menambahkan dokumentasi API interaktif menggunakan OpenAPI dan Swagger UI supaya API lebih mudah dipakai developer lain.
Bagian terakhir seri ini: men-deploy aplikasi Goravel ke server menggunakan Docker dan docker-compose, lengkap dengan MySQL.