Pengenalan Web API

Rohmad Fajarudin
Amikom Computer Club

--

Pendahuluan

API
Application Programming Interface (API) secara analogi, adalah “suatu jembatan” atau antarmuka yang memungkinkan satu aplikasi untuk berkomunikasi dengan aplikasi lain dan menggunakan sumber daya aplikasi tersebut dalam aturan-aturan yang sudah ditetapkan.

Proses menggunakan sumber daya tersebut dalam bahasa inggrisnya diistilahkan sebagai consume, yang nantinya kita akan sering mendengar kata consume api, yang artinya kita menggunakan API tersebut di dalam aplikasi yang dibuat.

API sangatlah umum dan pada dasarnya terdapat dimanapun, seperti di sistem operasi yang memberikan API untuk memanipulasi file, memberikan abstraksi untuk mengontrol hardware, dan sebagainya kepada pengembang aplikasi untuk digunakan di aplikasi buatannya.

Web API
Yang akan kita buat nantinya adalah yang disebut sebagai Web API. Berbicara mengenai web maka tidak lepas dengan protokol HTTP yang menjadi dasar dari web itu sendiri. Sehingga Web API pada dasarnya adalah API yang dapat diakses melalui protokol HTTP.

RESTful Web Service
Untuk membuat Web API, kita akan menggunakan panduan arsitektur yang namanya REST (Representational State Transfer). REST disini bisa disebut sebagai seperangkat aturan yang harus kita ikuti ketika ingin membuat API. Hasilnya, aplikasi web yang menerapkan ini akan disebut sebagai RESTful Web Service.

Mengapa harus ada API?

Daripada disebutkan list-list kelebihan yang bisa banyak banget, coba kita kembali ke analogi kita sebelumnya aja, jika API diibaratkan sebagai jembatan maka tentu kita bisa melewatkan berbagai kendaraan di atasnya bukan? Kalau “kendaraan” tadi kita ganti dengan “aplikasi”?

Nah karena API adalah jembatan bagi aplikasi lain untuk mengakses data dan sumber daya aplikasi kita, maka aplikasi tersebut dapat memanfaatkannya untuk dikembangkan menjadi bentuk presentasi yang lain dan akhirnya keduanya saling terintegrasi.

Contoh gampangnya coba temen-temen cek smartphone masing-masing, coba saya terawang… pasti pada install WhatsApp? Atau Instagram? Nah kalo dipikir-pikir gimana caranya ketika kita buka Instagram di smartphone, terus bikin story misalnya kok bisa tampil di Instagram web juga? Padahal keduanya beda platform, yang satu sebagai apps di smartphone yang satunya di web.

Jadi tanpa temen-temen sadari, dua apps yang kita sebut tadi menggunakan API yang mereka buat sendiri loh, dan menyajikannya dalam bentuk aplikasi web dan aplikasi mobile yang bisa temen-temen pake bergantian. Nah, mulai terbayang-bayang m̵a̵n̵t̵a̵n̵ gambarannya belum 😀

Anatomi dari sebuah Request

API berkaitan erat dengan proses yang namanya Request-Response. Masih ingat dengan materi nya? 🤔 Mari kita coba ulas kembali!

Ketika kita mengakses sebuah website, kita melakukan sebuah proses yang dinamakan dengan Request melalui web browser (disini web browser akan disebut User Agent) yang berisikan:

  • URI atau Endpoint
  • Method
  • Header
  • Body

Endpoint
Ini adalah alamat yang ingin kita akses. Endpoint atau Alamat ini dibagi menjadi tiga bagian, yang pertama adalah root endpoint dimana itu akan menjadi dasar kita untuk mengakses semua resource yang dimiliki web tersebut. Contoh:

https://api.example.com/

Kemudian yang kedua adalah path, yang akan memberitahu server sumber daya mana yang ingin kita akses. Contohnya:

<root>/v1/people

Sehingga alamat utuh yang kita berikan ke server menjadi:

https://api.example.com/v1/people

Dan bagian yang terakhir adalah query parameter. Query parameter terdiri dari pasangan key dan value yang dipisahkan dengan tanda (=), pasangan pertama diawali dengan tanda (?) dan antar pasangan selanjutnya dihubungkan dengan tanda (&). Adakah yang mengingat ini? contoh dari Query Parameter:

<root>/<path>?cari=jodoh&yang=mau&dengan=aku

Alamat utuh yang kita berikan ke server menjadi:

https://api.example.com/v1/people?cari=jodoh&yang=mau&dengan=aku

Endpoint yang sangat deskriptif ini akan memudahkan kita untuk mengingatnya, terlebih hukumnya menjadi wajib ketika kita membuat API.

Method
Method digunakan untuk memberi tahu server maksud dari permintaan kita. Dalam REST, kita mengenal 5 metode HTTP. Metode-metode ini sebenarnya merepresentasikan operasi CRUD (Create, Read, Update, Delete) seperti yang pernah kita pelajari sebelumnya. Metode-metode tersebut adalah:

  • GET
    Jangan tertukar dengan Superglobal Variable GET yang pernah kita bahas. Metode ini merepresentasikan operasi Read. Yaitu jika kita hanya ingin mengakses sumber daya tanpa ada permintaan pengubahan apapun.
  • POST
    Lagi, meski namanya sama tetapi jangan tertukar dengan superglobal variable POST yang pernah kita bahas. Metode POST ini merepresentasikan operasi Create, yaitu ketika kita ingin membuat data (sumber daya) baru.
  • DELETE
    Seperti namanya, metode ini merepresentasikan operasi Delete.
  • PUT dan PATCH
    Dua metode ini merepresentasikan operasi Update, yaitu ketika kita ingin memperbarui data (sumber daya) yang sudah ada di server dengan sumber daya baru yang kita berikan.

PUT dan PATCH meski sama-sama untuk operasi update, tapi keduanya digunakan untuk membuat perilaku update yang berbeda.

Misal kita punya data produk. Anggaplah disana ada Nama Produk, Deskripsi, dan Harga. Kemudian kita cuma pengen perbarui Harganya.

PUT akan akan mengupdate semuanya meskipun selain Harga, datanya ngga berubah. Sedangkan PATCH hanya akan mengupdate data yang ingin dirubah aja, yaitu Harga.

Ketika digabung dengan Endpoint sebelumnya, maka request kita akan semakin jelas dan masuk akal oleh server. Terlebih jika endpoint yang digunakan sama persis, hanya berbeda metode.

Header
Header memberikan informasi tambahan yang ingin disampaikan baik dari kita ke server ataupun sebaliknya. Contoh penggunaannya, salah satunya adalah kita dapat menambahkan header untuk menentukan tipe konten dari respon yang akan diberikan server.

Meskipun sangat jarang dalam pemakaiannya, tetapi kita dapat menambahkan custom header kita sendiri jika menginginkannya. Atau menggunakan header yang sudah didefinisikan yang tiap headernya mempunyai maksud dan tujuan tertentu, untuk daftar header yang dapat kita manfaatkan teman-teman dapat mengakses link ini:

https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers

Body
Body berisikan data yang ingin disampaikan ke server untuk diproses, dalam REST kita dapat menambahkan data ke body hanya untuk request yang menggunakan method selain GET. Meskipun dalam kenyataannya kita tetap bisa menambahkan data ke body dengan method GET, tetapi server tidak berkewajiban untuk memproses data tersebut.

Anatomi dari sebuah Response

Ketika server selesai memproses Request yang kita kirimkan, server akan memberikan hasilnya kepada kita sebagai client. Proses memberi kembalian ini dinamakan Response.

Pada dasarnya Response mempunyai anatomi yang hampir sama persis dengan Request, Hanya saja terdapat beberapa perbedaan pada kontennya. Dan disini kita hanya akan fokus pada konten response dan status kode yang diberikan server ke client. Dalam REST, tipe konten dari response mempunyai tipe antara JSON, XML, dan HTML. Dan yang paling sering dipakai untuk API adalah JSON.

JSON (JavaScript Object Notation) merupakan sebuah format data human-readable yang sering dipakai untuk penyimpanan dan pertukaran data. Meskipun ada kata JavaScript, tetapi JSON bersifat language-independent, artinya tidak terikat dengan bahasa pemrograman apapun termasuk JavaScript itu sendiri.

Untuk menulis data JSON, karena dia object maka dimulai dengan tanda bracket buka { dan diakhiri dengan bracket tutup }. Isinya adalah data pasangan key (bertipe data string) dan value yang dipisahkan dengan tanda titik dua. Jika data lebih dari satu maka sebelum menulis pasangan selanjutnya harus dipisah dengan koma. Berbeda dengan key yang harus bertipe data string, maka value dapat bertipe data apapun termasuk array atau object lagi. Contoh data dalam format JSON:

{
“nama”: “Amikom Computer Club”,
“periode”: 2020,
“aktif”: true,
“divisi”: [
“Computer Network”,
“Desktop Programming”,
“Hardware Software”,
“Mobile Programming”,
“Web Programming”
],
“sosmed”: {
“instagram”: “https://instagram.com/amccamikom”,
“website”: “https://amcc.or.id”,
“email”: “amcc@amikom.ac.id
}
}

Response Code
Selain tipe konten, satu lagi yang penting dari Response adalah Response Code. Response Code ini dapat kita gunakan untuk memberitahu client mengenai status Request yang sudah diolah server.

Ada banyak sekali kode respon, tetapi umumnya kode respon dikategorikan sebagai berikut:

  • 20X menandakan request berhasil
  • 30X menandakan request diarahkan ke alamat lain (moved/redirect)
  • 40X menandakan request gagal karena kesalahan pada sisi client
  • 50X menandakan request gagal karena kesalahan pada sisi server

Untuk detail dari tiap kode: https://restfulapi.net/http-status-codes/

Implementasi JSON di PHP

Pada bahasa pemrograman PHP, kita cukup dimudahkan dengan disediakannya dua fungsi yang bernama json_encode() dan json_decode(). Seperti namanya, kedua fungsi tersebut dapat kita gunakan untuk mengubah tipe data di PHP menjadi JSON String dan sebaliknya.

Contoh kode PHP yang mengubah tipe data biasa menjadi JSON String dan sebaliknya:

<?php// Data asli di PHP
$amcc = [
“nama” => “Amikom Computer Club”,
“periode” => 2020,
“aktif” => true,
“divisi” => [
“Computer Network”,
“Desktop Programming”,
“Hardware Software”,
“Mobile Programming”,
“Web Programming”
],
“sosmed” => [
“instagram” => “https://instagram.com/amccamikom”,
“website” => “https://amcc.or.id”,
“email” => “amcc@amikom.ac.id
]
];
// Ubah menjadi JSON String
$amccJson = json_encode($amcc);
// Ubah kembali menjadi semula
$amccOri = json_decode($amccJson, true);

Consume API Sederhana di PHP

<?php// Membuat request GET ke endpoint (hasilnya adalah JSON string)
$getPost = file_get_contents(“https://jsonplaceholder.typicode.com/posts/1”);
// Hasil dari request tadi kita ubah ke tipe data PHP dengan json_decode()
$post = json_decode($getPost, true);

Consume API di Postman
Postman adalah sebuah tool yang dapat kita gunakan untuk melakukan testing pada Web Service. Kedepannya kita akan beralih dari browser dan lebih sering menggunakan tool ini untuk melakukan pengujian API yang kita buat di aplikasi.

Jika Request berhasil maka akan tampil Response bertipe JSON dibawahnya.

--

--