Categories
Open Source PHP Programming

Fusio – Bina REST API Untuk Aplikasi Web Dengan Mudah Dan Pantas

Baru-baru ni saya ada keperluan untuk membina API (application programmable interface) untuk aplikasi web yang sedia ada. API biasanya berkonsepkan REST (menggunakan protokol GET, POST, PUT, DELETE, PATCH).

Dengan adanya API, kita boleh membina aplikasi yang menggunakan database yang sama, tanpa membenarkan aplikasi mendapat akses terus kepada database. Dalam situasi yang lain, mungkin ada beberapa data dan operasi yang kita boleh benarkan kepada pihak luar, untuk mereka bina aplikasi mereka sendiri. Selain daripada contoh ini, dengan aplikasi mobail pula, memang biasa kita bina API agar aplikasi di telefon bimbit boleh membaca dan memanipulasi data dalam skop yang dibenarkan.

Bagaimana nak membina API?

Kaedah pertama yang terlintas di fikiran adalah dengan menggunakan framework seperti Codeigniter ataupun Slim. Kedua-dua ini menyokong protokol REST. Kita boleh tetapkan alamat URL atau routing dengan protokol REST yang disokong, dan kemudian menulis kod untuk melaksanakan operasi.

Kita boleh gunakan ini, akan tetapi membina API bukan sekadar menyokong operasi yang nak dilaksanakan oleh aplikasi luar. Selain daripada ini, API juga mesti mempunyai ciri-ciri :

  • Pengurusan pengguna
  • Pengurusan token keselamatan
  • Berupaya menyekat trafik yang melampau
  • Log dan analitik penggunaan
  • Membantu menetapkan URL API
  • Menguruskan dan mengawak akses dan kebenaran kepada API untuk pengguna
  • Membantu menetapkan syarat-syarat API seperti POST, GET, PUT, DELETE, PATCH dengan lebih mudah

Banyak juga yang nak dibangunkan. Saya ni programmer PHP sahaja. Dan mujur saya terjumpa sebuah sistem untuk pembangunan dan pengurusan API yang berasaskan PHP. Dan lebih menarik, ianya open source dan percuma.

Mari Berkenalan dengan Fusio

Pertama, elok kita beri kredit kepada pembangunnya, Christoph Kappestein. Kemudian, Fusio ini boleh didapati dari http://fusio-project.org

Fusio adalah sesuatu yang kita panggil API Gateway.

API Gateway ini memudah semua kerja-kerja yang saya senaraikan di atas tadi. Dengan Fusio, kita mudah untuk membina sesebuah API untuk aplikasi. Kita hanya perlu

  1. menetapkan routing atau alamat URL
  2. menyatakan jenis protokol yang diterima (GET / POST / dll)
  3. nyatakan script Action yang akan mengendalikan

Antara ciri-ciri menarik apabila kita membangunkan API dengan Fusio, apabila kita membangunkan Action untuk mengendalikan trafik ke API, ianya boleh dibangunkan secara:

  • SQL-Table – keadah mendedahkan table kepada umum secara REST tanpa sebarang pengaturcaraan.
    • GET akan menyenaraikan rekod-rekod dalam table
    • GET dengan id akan memaparkan rekod khusus
    • POST untuk memasukkan rekod baru
    • PUT untuk kemaskini rekod atau insert
    • DELETE untuk membuang rekod tertentu
  • PHP modular
  • PHP Class
  • Javascript melalui V8 Engine parser
  • Capaian HTTP ke luar
  • Membaca dan memaparkan kandungan fail
  • Memaparkan JSON terus

Selain dari itu, Fusio juga boleh membantu menyimpan data sambungan ke database untuk kegunaan Action. Kita boleh mempunyai lebih daripada satu sambungan database sekiranya perlu.

Sebagai ciri keselamatan, Fusio menggunakan kaedah JSON Web Token atau JWT untuk mengesahkan pengguna API.

API yang dibangunkan boleh ditetapkan sebagai terbuka ataupun tertutup (private). Sekiranya ia adalah API tertutup, maka API mesti dipanggil bersama dengan token yang dihantar dalam HTTP Header Authorization.

Maka pengguna API perlu login terlebih (secara API) untuk mendapatkan token Dengan token ini, baru pengguna ataupun aplikasi boleh melaksanakan operasi lain di API dengan menggunakan token.

Sebenarnya banyak yang boleh dilakukan dengan Fusio ini. Bagi saya, kalau kita nak membina aplikasi mobile, atau SPA (single page app) atau PWA (progressive web app), boleh pertimbangkan untuk guna Fusio sebagai backend atau API.

Baru-baru ini saya ada buat satu FB live yang menunjukkan beberapa ciri dalam Fusio. Mungkin boleh mula di sini. Dan selamat menonton.

Leave a Reply