Tugas Akhir
Penjelasan
Tugas akhir ini menggabungkan beberapa konsep inti Play yang sudah dipelajari: routing dengan parameter dinamis, controller dengan Action sinkron maupun async, form handling dengan validasi, response JSON, dan penggunaan session untuk menandai user yang sudah "login" secara sederhana. Studi kasus: modul manajemen produk sederhana bernama ProdukController yang mendukung menambah produk lewat form (dengan validasi nama tidak boleh kosong dan harga minimal 0), menampilkan daftar produk sebagai JSON, dan endpoint yang hanya bisa diakses jika session "userId" tersedia (selain itu redirect ke halaman login).
Tugas
Implementasikan ProdukController dengan spesifikasi berikut: 1. Route GET /produk/api mengembalikan daftar produk (List[Produk] statis di memori boleh saja) sebagai JSON menggunakan Play JSON. 2. Route POST /produk/tambah menerima form (nama: String, harga: Int) memakai Play Forms dengan validasi nonEmptyText dan number(min = 0); jika gagal, BadRequest dengan pesan error; jika sukses, redirect ke /produk/api. 3. Route GET /produk/rahasia hanya bisa diakses jika request.session berisi key "userId"; jika tidak ada, redirect ke /login dengan flash message "Silakan login dulu". 4. Tuliskan juga baris conf/routes yang sesuai untuk ketiga endpoint tersebut. Tuliskan kerangka controller dan routes yang menggabungkan keempat poin di atas.
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
Kerjakan bertahap: pastikan dulu endpoint JSON berjalan, baru form dengan validasi, lalu session-guard terakhir — menggabungkan fitur satu per satu memudahkan menemukan bagian mana yang error.