Sejak versi 2019, PHPMaker memperkenalkan fitur baru yaitu REST API yang memungkinkan Web Developer untuk melakukan fungsi CRUD (Cread, Read, Update, dan Delete) untuk object Table pada Aplikasi Web yang dihasilkannya.
REST API di PHPMaker 2019 diimplementasikan berdasarkan halaman List, View, Add, Edit, dan Delete untuk setiap object Table yang dibangkitkan olehnya. Beberapa aksi dasar yang didukung oleh API adalah add (Create), list / view (Read), edit (Update), delete (Delete), login (Authenticate User, jika fitur Security diaktifkan), dan file (Get file content).
Selengkapnya bisa Anda baca-baca dari topik REST API yang sudah disediakan pada menu Help PHPMaker 2019. Jadi, jangan pernah bosan untuk membuka menu Help di PHPMaker, ya!
Lanjut ke topik semula. Dalam tulisan ini, kita tidak akan membahas API built-in (bawaan) PHPMaker tersebut di atas. Tapi, kita akan mencoba membuat sendiri penanganan API yang bersifat kostum sesuai kebutuhan.
Kita sebagai Web Developer juga dapat membuat aksi-aksi API yang baru, dengan menulis sedikit kode PHP yang berisi penanganan API. Cukup letakkan kodenya pada bagian Global Code di bawah Server Events dari project PHPMaker (silahkan baca juga topik Server Events and Client Scripts dari menu Help PHPMaker).
Kita akan membahas betapa mudah dan cepatnya membuat API sendiri, di mana balikannya dapat digunakan untuk mengisi nilai pada field UnitPrice, berdasarkan nilai yang dipilih pada field ProductID dari table products melalui file demo project yang sudah disediakan oleh PHPMaker 2019.
Dalam hal ini, sebenarnya kita akan mengimplementasikan fitur Auto Fill, tapi dengan cara yang berbeda. Kita tidak akan menggunakan fitur Auto Fill bawaan asli PHPMaker 2019 tersebut. Ini salah satu fleksibilitas yang disediakan oleh PHPMaker 2019, bahwa tidak selamanya kita harus menggunakan fitur statis Auto Fill.
Oleh karena itu, pastikan sekali lagi kita menonaktifkan fitur Auto Fill dari panel Lookup Table dari table orderdetails pada file demo project tersebut.
Setelah fitur Auto Fill tadi kita nonaktifkan, maka cukup lakukan dua langkah utama berikut.
-
Pertama, kita menulis sedikit kode PHP berupa penanganan API yang bersifat kostum (sesuai kebutuhan). Karena kode PHP, maka kita akan menulisnya di bagian Server Events, lebih tepatnya di dalam Global Code, yaitu sebagai berikut:
$API_ACTIONS["getUnitPriceByProductID"] = function(Request $request, Response $response) { $productId = Param("ProductID"); // Ambil nilai masukan dari _GET atau $_POST if ($productId !== NULL) Write(ExecuteScalar("SELECT UnitPrice FROM products WHERE ProductID = " . AdjustSql($productId))); // Kembalikan nilai field sebagai sebuah String };
Perhatikanlah kode PHP di atas. Kita menulis penanganan API dengan nama getUnitPriceByProductID, di mana balikannya berupa nilai UnitPrice yang akan dikembalikan berdasarkan parameter ProductID. Cukup sederhana kode di atas, dan seharusnya tidak terlalu sulit untuk kita pahami.
-
Kedua, kita akan menulis kode jQuery yang akan memanggil penanganan API yang sudah kita tulis pada langkah pertama tadi, berdasarkan event change milik control Select atau Combobox. Untuk itu, letakkan kode ini pada bagian Startup Script milik halaman Add dari table orderdetails:
$("#x_ProductID").change(function() { var url = ew.API_URL, action = "getUnitPriceByProductID", id = encodeURIComponent($(this).val()); $.get(url + "?action=" + action + "&ProductID=" + id, function(res) { // Ambil respon dari aksi kostum API if (res) $("#x_UnitPrice").val(res); // Tampilkan hasilnya ke field tujuan, yaitu UnitPrice }); });
Kode tersebut akan memanggil API yang bernama getUnitPriceByProductID jika Pengguna Akhir Aplikasi Web yang dihasilkan oleh PHPMaker 2019 memilih salah satu nilai pada field ProductID yang menggunakan control Select atau Combobox. Nilai balikan dari API tadi akan ditampilkan pada field UnitPrice.
Ini hanya contoh sederhana saja. Tentu kita bisa mengembangkannya sesuai kebutuhan. Misalnya, kita ingin mengisi field lain berdasarkan hasil perhitungan dengan rumus tertentu yang kita tentukan, sebelum hasilnya ditampilkan ke field tujuan.
Selanjutnya, generate ulang semua file script seperti biasa menggunakan PHPMaker 2019. Lalu jalankan Aplikasi Web yang dihasilkannya melalui browser, dan bukalah menu Order Details. Sekarang silahkan coba tambah data Order Details baru. Saat kita memilih salah satu nilai pada field ProductID, maka nilai di field UnitPrice akan otomatis terisi.
Keren, ‘kan? Hanya dengan sedikit kode di atas saja, fitur Auto Fill bisa kita implementasikan secara lebih dinamis sesuai kebutuhan.
Yang lebih menyenangkannya adalah, PHPMaker sudah menyediakan framework seperti di atas, yang memungkinkan Pengguna Akhir menampilkan data berdasarkan event yang terjadi di sisi Client (Pengguna Akhir) dari Aplikasi Web yang kita hasilkan. Data yang ditampilkan tersedia melalui API yang sudah kita definisikan menggunakan kode di sisi Server Events, sedangkan trigger event-nya dilakukan dari sisi Client.
Kesimpulan: Dengan membuat penanganan API yang bersifat kostum dengan menggunakan PHPMaker seperti di atas, kita bisa mengatasi beberapa permasalahan klasik yang sering terjadi di Aplikasi Web. Misalnya, kita ingin menampilkan nilai tertentu berdasarkan nilai yang terpilih di suatu field, dimana hasilnya berasal dari pemanggilan Query ke Database berdasarkan parameter atau kondisi tertentu sesuai kebutuhan business-logic.
Betapa mudah, cepat, dan menyenangkan sekali bukan bekerja dengan PHPMaker 2019?
john mengatakan
Trima Kasih pa sdh bahas API sukses slalu
Masino Sinaga mengatakan
Sama-sama. 🙂
andika mengatakan
yang di tunggu akhirnya di bahas juga, terima kasih pak masino
lebih keren lagi, jika bahas fitur rest api phpmaker 2019 bisa di koneksikan dengan aplikasi lain, seperti phpmaker dengan phpreportmaker.
Sepertinya fitur rest api ini ada untuk bisa di koneksikan dengan aplikasi DBappmaker. semoga nanti di bahas juga pak ya, hehe…
Masino Sinaga mengatakan
Hehe, semoga ya.
tri pramudiyanto mengatakan
Pak Masino, saya ada rencana untuk membeli lisensi PHPMaker. Apakah bisa dibantu?
Masino Sinaga mengatakan
Bisa. Klik artikel ini untuk info lebih lanjut.
Ahmad Hidayat mengatakan
Saya mau buat grafik di phpmaker2020, saya aktifikan pane database dan klik report, tapi tab grafik tidak tampil, yang tampil hanya tab table saja. MInta tolong, gimana tu Mas?
hari mengatakan
apa di phpmaker bisa digunakan untuk mengisi field textbox berdasarkan tabel dari database yang lain,atau biasa disebut restaAPI
Masino Sinaga mengatakan
Bisa. Kan sudah dijelaskan di artikel yang di atas?
dany tri mengatakan
Selamat malam Pak Masino,
Saat ini saya lagi mencoba Api phpmaker. Bagus mudah dan cepat.
Permasalahannya jquery nya di viewsouce kan muncul.
Dan betul setelah saya coba caller api nya langsung tanpa login di browser request nya diterima dan menampilkan data.
Saya ada ide menambahkan token untuk auth nya…
Mungkin Pak Masino ada ide lain ?
Masino Sinaga mengatakan
Sudah baca Authenticate User with JWT (JSON Web Token) pada topik REST API dari menu Help di PHPMaker?