MODUL 9
PEMROGRAMAN WEB
RESTful API
A. TUJUAN PERKULIAHAN
a. Mahasiswa memahami API dalam pemrograman komputer
b. Mahasiswa mengenali struktur penulisan REST
c. Mahasiswa mampu mengimplementasikan REST dengan PHP
B. ALOKASI WAKTU 3 x 50 menit
C. DASAR TEORI
1. API
API kependekan dari Application Programming Interface merupakan sebuah
perangkat lunak yang dapat menerima panggilan atau permintaan dari perangkat lunak
lainnya seperti aplikasi dan website yang memberikan pelayanan. Dengan kata lain API
merupakan sebuah perangkat lunak yang mengijinkan atau menghubungkan dua aplikasi.
Tidak hanya itu API juga digunakan untuk membuat software dan aplikasi oleh para
developer.
API dapat Anda temui dalam kehidupan sehari-hari seperti saat Anda memesan
hotel, mengirimkan pesan, memesan makanan secara online maupun ketika mengunduh
sebuah software. Bagaimana hal tersebut terjadi? Prosesnya seperti ini, ketika Anda
menggunakan aplikasi maupun melakukan aktifitas tersebut, aplikasi terhubung ke internet
dan mengirimkan data ke server. Setelah itu, data tersebut diambil dan diterjemahkan oleh
server yang kemudian melakukan aksi yang diperlukan sebagai hasilnya kemudian
dikirimkan kembali ke smartphone Anda. Setelah menerima data tersebut, aplikasi
menerjemahkannya lalu memberikan informasi yang anda inginkan dengan cara yang
mudah dibaca. Dengan adanya API semua dapat berjalan dengan lancar dan memudahkan
komunikasi antar perangkat.
API membuat pemrograman menjadi lebih mudah dan mungkin. Seperti yang
sudah disebutkan di atas, kebutuhan kita sebagai pelanggan dan khususnya bagi developer
sangat dimudahkan dengan adanya API. Dengan melihat hal tersebut, peran dari API
sendiri sangat berat terlebih untuk membuat tampilan sebuah aplikasi menjadi interaktif,
mudah untuk digunakan, dan bersahabat untuk pengguna. Tidak hanya itu, API juga
digunakan untuk berkomunikasi antara layanan-layanan. API memiliki peran yang sangat
penting dalam teknologi.
2. Keuntungan API
a. Meningkatkan produktivitas
Karena permintaan untuk software modern terus meningkat, perusahaan mencari jalan
yang cepat untuk membuat prototype dan membuat poduk baru. Jika Developers
menghabiskan waktu untuk membangun aplikasi dari awal atau dari bawah keatas,
ketika solusi yang diberikan serupa dengan dengan API yang sudah terekspos, maka
hal tersebut akan berdampak negatif untuk produtivitas suatu perusahaan.
API menawarkan mekanisme untuk melakukan pengembangan yang lebih cepat.
Dengan API, Developer dapat dengan cepat melakukan implementasi fungsi yang
sudah ada dibandingkan membuat fungsi dari scratch atau dari awal.
b. Menghemat biaya (Aplikasi skala besar)
Biaya untuk membangun suatu aplikasi berbeda-beda tergantung pada beberapa faktor,
termasuk pada kompleksitas proyek, jenis teknologi yang digunakan, dan keahlian
developer.
Salah satu keuntungan terbesar API untuk bisnis adalah kemampuan untuk
penghematan biaya. Karena API secara signifikan mengurangi upaya pengembangan,
penggunaannya untuk membuat aplikasi merupakan cara yang baik untuk menghemat
biaya.
Dengan API, developer dapat mengambil sebagian fungsi yang dibutuhkan untuk
membuat aplikasi dari tempat lain tanpa harus membuat aplikasi dari awal.
Dibandingkan harus menghabiskan sumber daya dan waktu yang berharga, developer
bisa mengefektifkan biaya API dari penyedia pihak ketiga atau menggunakan API
internal sendiri.
c. Meningkatkan konektivitas dan kolaborasi
Private atau Internal API dapat meningkatkan kolaborasi dan komunikasi internal
dalam suatu perusahaan. Fungsi utama dari API adalah Konekstivatas,
API memungkinkan sistem, aplikasi dan platform yang berbeda dapat terhubung dan
sharing data dengan yang lainnya dan melakukan berbagai jenis fungsi.
d. Meningkatkan UX
Dengan memanfaatkan kemampuan API, perusaahan dapat membuat produk baru dan
berinteraksi dengan customer secara efektif, khususnya di era digital seperti sekarang
ini. Pada umumnya, customer saat ini tertarik pada pengalaman yang dipersonalisasi,
daripada harus membuat solusi bisnis secara general, satu untuk semua. Dengan API,
Developer dapat membuat solusi secara spesifik yang memenuhi harapan customer.
e. Kemampuan untuk membuat produk baru
Menyelesaikan fungsionalitas suatu proses bisnis dan mengeksposnya menjadi sebuah
API, menjadi tawaran yang menggiurkan untuk developer untuk membuat aplikasi
diatasnya. Selain membangun hubungan partnership yang kuat, hal ini memungkinkan
untuk menciptakan lebih banyak fitur yang belum terencana sebelumnya.
3. Kelemahan API
a. Biaya besar (Aplikasi skala kecil)
API membutuhkan suatu biaya yang terbilang relatif mahal jika diimplementasikan
pada aplikasi skala kecil, dalam hal waktu pengembangan, pemeliharaan berkelanjutan,
menyediakan suatu dokumentasi API di suatu website.
b. Potensi serangan yang besar
API memiliki keamanan yang standar sehingga potensi serangan ke web API sangat
besar. Setiap URL API yang terekspos ke publik harus tidak memiliki celah sehingga
perlu adanya autentikasi seperti penggunaan token atau password.
c. Data kurang spesifik
API belum menentukan suatu hasil yang sesuai dengan kebutuhan atau ekspetasi kita.
Misalnya sebuah API memberikan data tentang Kasus Covid di Seluruh Indonesia.
Namun kita hanya memerlukan data untuk Penduduk DKI Jakarta, sehingga kita tidak
butuh data daerah lain. Ini yang dimaksud belum sesuai kebutuhan atau ekspektasi.
Dengan demikian, perlu menambahkan coding filtering khusus daerah tertentu
4. Output API
Output dari RESTful ada XML dan JSON.
JSON (JavaScript Object Notation), beberapa ciri-ciri JSON.
1. Mudah di urai, bahkan oleh javascript pada sisi client, hanya object biasa
2. Data transport lebih kecil
3. Proses urai lebih cepat
XML (Extensible Markup Language), beberapa ciri-ciri XML
1. Butuh XML Document untuk mengurai (Xpath)
2. Data transport lebih besar
3. Proses urai lebih lambat
5. REST dan RESTful
REST (Representational State Transfer) itu arsitektur sebuah software, sedangkan RESTful
API itu merupakan salah satu model implementasi dari web service. RESTful API
merupakan implementasi dari API. RESTful adalah protokol/aturan untuk melakukan
REST. RESTful biasanya digunakan untuk merujuk ke layanan web yang
mengimplementasikan arsitektur REST.
Ada beberapa framework REST yang bagus bagi PHP, misalnya: CodeIgniter, Lumen,
Slim, Laravel, Silex. Berikut adalah tabel metode dalam REST
6. Key element pada RESTful API
a. Resources
Elemen kunci pertama adalah resource dari aplikasi itu sendiri sendiri. Mari kita
asumsikan bahwa aplikasi web suatu perusahaan di server memiliki database
karyawan. Contoh URL aplikasi web adalah [Link] Sekarang untuk
mengakses resource database karyawan melalui layanan REST, seseorang dapat
memasukkan perintah [Link] Perintah ini memberi tahu server
web untuk memberikan rincian karyawan yang nomor karyawannya 1.
b. Request Method
Elemen ini menjelaskan apa yang ingin Anda lakukan dengan resourcenya. Browser
mengeluarkan perintah GET untuk menginstruksikan titik akhir yang diinginkan untuk
mendapatkan data. Namun, ada banyak metode lain yang tersedia termasuk hal-hal
seperti POST, PUT, dan DELETE. Jadi dalam kasus contoh
[Link] , browser web sebenarnya mengeluarkan GET karena
ingin mendapatkan detail catatan karyawan.
c. Request Headers
Request headers adalah instruksi tambahan yang dikirim dengan request. Elemen ini
menentukan jenis respons yang diperlukan atau detail otorisasi
d. Request Body
Data biasanya dikirim dalam permintaan ketika permintaan dengan method POST
dibuat ke layanan web REST. Dalam panggilan POST, klien sebenarnya memberi tahu
layanan web REST bahwa ia ingin menambahkan resource ke server. Oleh karena itu,
request perlu diisi dengan detail data yang diperlukan untuk ditambahkan ke server.
e. Response Body
Response body adalah tubuh utama dari respon yang diharapkan. Dalam contoh
RESTful API, jika kita meminta server web melalui permintaan
[Link] , server web akan mengembalikan dokumen berupa
JSON atau XML dengan semua detail karyawan di response body.
f. Response Status codes
Kode-kode ini adalah kode umum yang dikembalikan bersama dengan respons dari
server web. Contohnya adalah kode 200 yang biasanya dikembalikan jika tidak ada
kesalahan saat mengembalikan respons ke klien. Atau kode 404 apabila alamat tidak
ditemukan.
7. Tools dalam testing RESTful API
1. Postman
2. RESTED
3. HTTPMaster
D. PRAKTIKUM : MEMBUAT RESTful API SEDERHANA
a. Brief Overview
Kita akan membuat REST API untuk modul pegawai yang akan menangani request
HTTP Get, Post, Put dan Delete untuk mengambil, menambahkan, mengupdate,
dan menghapus record-record dari database MySQL.
Buat folder 'pemweb/p10' di dalam root directory dari web server, misalnya
/var/www/html/ pemweb/p10 atau c:\xampp\htdocs\pemweb\p10.
File-file yang akan digunakan selama percobaan turorial REST API ini:
1 [Link] : File ini adalah file entri, sekaligus mencegah navigasi terhadap file-
file di dalam folder.
2 [Link] : File ini digunakan untuk membangun koneksi ke database server
MySQL.
3 .htaccess : File ini digunakan untuk mengatur redirect dan routing
Route Method JSON field Deskripsi
/karyawan GET - Meminta semua data
pegawai
/karyawan/{id} GET - Meminta data satu
pegawai
/karyawan POST {“nama”:..., Menambahkan
“email”: ... , record pegawai baru
“jabatan” ..... , ke dalam database
“gaji” .... }
/karyawan/{id} PUT {“nama”:..., Mengupdate record
“email”: ... , pegawai tertentu
“jabatan” ..... ,
“gaji” .... }
/karyawan/{id} DELETE - Menghapus data
pegawai tertentu
Tabel tersebut menunjukkan routing alamat yang dapat diakses serta hasil yang
diharapkan dari akses dari masing-masing route
b. Membuat Skema Tabel Database
Buatlah suatu database MySQL bernama “perusahaan_db”, lalu buat field
berikut di dalam tabel bernama karyawan.
Input 3 dummy records ke dalam SQL.
c. Membuat File Koneksi
Buat file bernama [Link] dan menambahkan string koneksi MySQL untuk
menghubungi MySQL dengan menggunakan metode mysqli_connect().
d. Membuat File .htaccess
buat file .htaccess (diawali dengan titik) di dalam folder dan memasukkan beberapa
baris aturan untuk mengatur akses ke REST API dengan URL yang lebih singkat,
bagus dan aman. Inilah baris-baris yang harus dimasukkan dalam file .htaccess
tersebut.
[Link] → Rewrite Rule Flags
e. REST GET untuk mengambil data pegawai
Kita akan membuat suatu request REST HTTP jenis GET untuk mengakses semua
record pegawai dari database MySQL. Kita akan menggunakan query MySQL
untuk mengambil data dari tabel karyawan dan mengirimkan array data JSON ke
client sebagai obyek respon. Sekarang kita buat file bernama [Link] dan
tambahkan file koneksi MySQL untuk mengakses data di dalam tabel di server
database MySQL.
Kita menggunakan metode $_SERVER untuk mendapatkan informasi mengenai
aksi, seperti request REST untuk menambahkan, mengedit atau menghapus.
Perintah switch...case digunakan untuk menyeleksi dan menentukan metode
akses yang tepat untuk menangan resquest REST yang masuk. Asumsi bahwa
segmen ke 4 adalah ID karyawan, sehingga contoh alamat endpoint nanti adalah
[Link]
Kita memanfaatkan request GET untuk mengambil data semua pegawai dari
database, sedangkan untuk pegawai tunggal (tertentu) perlu melewatkan id
karyawan. Kita mendefinisikan metode get_karyawan() yang berisi kode di
bawah ini:
Metode mysqli_query() mengambil data dari tabel karyawan di MySQL dan
menyimpannya sebagai obyek ke dalam variabel 'result'. Metode json_encode()
digunakan untuk mengkonversi array data ke dalam string json.
Selanjutnya akses URL REST API dengan menggunakan tools testing API
dengan alamat [Link] dan kita akan mendapatkan
informasi tentang semua record pegawai yang ada di dalam tabel karyawan.
Untuk dapat mengakses data karyawan tertentu, tambahkan id karyawan pada
akhir endpoint, misal [Link]
Berikut contoh tampilan GET dari RESTED
f. REST POST untuk menambah data pegawai
Kita akan membuatkan suatu REST API baru untuk menambahkan (insert) record
pegawai baru ke dalam MySQL menggunakan PHP. Kita menggunakan request
REST jenis POST karena kita akan menge”pos”kan beberapa data JSON ke server.
Dalam struktur switch sebelumnya, silakan tambahkan case untuk “POST”, seperti
di bawah ini:
Fungsi yang akan menangani saat ada permintaan penambahan data baru adalah
metode insert_karyawan() di dalam file [Link].
Berikut contoh tampilan POST dari RESTED
Panggil kembali method GET untuk mendapatkan seluruh data, amati penambahan data yang terjadi!
g. REST PUT untuk mengubah data pegawai
Selanjutnya adalah membuatkan kode program untuk menangani request REST
API jenis HTTP PUT. Request ini ditujukan untuk mengupdate data yang telah
ada di dalamdatabase MySQL. Update didasarkan pada Id dari pegawai, karena itu
Id pegawai harus dijadikan sebagai parameter dari fungsi untuk menangani
pembaruan record pegawai tersebut. Sebelumnya, kita harus menambahkan case
baru “PUT” ke dalam struktur switch...case, seperti di bawah ini:
Selanjutnya kita buat method update_karyawan() di dalam [Link]. Kita
akan gunakan id yang akan digunakan sebagai parameter untuk update data dalam
format JSON.
Perhatikan, jika update berhasil, pesan keberhasilan dikirimkan ke client REST API
dalam format JSON.
Berikut contoh tampilan PUT dari RESTED
h. REST DELETE untuk menghapus data pegawai
Terakhir, kita harus membuat fungsi untuk menangani request REST API jenis
DELETE. Request ini meminta server API untuk menghapus record tertentu.
Seperti pada CREATE dan UPDATE, DELETE juga memelukan Id Pegawai
sebagai parameternya. Sebelumnya, kita perlu menambahkan case “DELETE” ke
dalam struktur switch ...case, seperti berikut ini:
Metode delete_karyawan() di dalam file [Link] bertanggungjawab menangani
penghapusan data pegawai tertentu. Field id digunakan sebagai kunci penghapusan
tersebut.
Berikut contoh tampilan DELETE dari RESTED
E. KEGIATAN
1. Ikuti langkah di atas, hingga kalian berhasil menjalankan fungsi CRUD melalui
RESTful API.
2. Gunakan tools pengujian API SELAIN RESTED.
3. Laporkan hasil pekerjaan kalian dalam file PDF, berikut dengan screenshot hasil uji
POST, GET, PUT dan DELETE.
4. File yang dikirim adalah .htaccess, [Link], [Link] serta PDF.
5. File database tidak perlu dikirim.
F. REFERENSI
• [Link]
• [Link]
[Link]
• [Link]
• [Link]
• [Link]
• [Link]
• [Link]