RESTful API
Apa Itu RESTful API?
Jika digambarkan RESTful API itu seperti jembatan antara dua komputer buat saling tukar-tukar informasi lewat internet dengan aman. Biasanya, aplikasi bisnis itu harus komunikasi sama aplikasi dalamnya sendiri dan juga sama pihak ketiga lainnya buat ngelakuin tugas-tugas beragam. Misalnya, buat bikin slip gaji bulanan, sistem akun dalam perusahaan harus bisa berbagi data sama sistem perbankan pelanggan buat ngebayarin tagihan secara otomatis, dan juga komunikasi sama aplikasi absensi internal. Nah, API RESTful ini tuh bantu banget buat pertukaran informasi kayak gitu, soalnya dia ngikutin standar komunikasi software yang aman, andal, dan efisien.
Apa Itu API?
API itu seperti peraturan komunikasi yang harus diikuti buat ngobrol sama sistem software yang lain. Para developer ini ngebuat dan ngasih tau API-nya biar aplikasi-aplikasi lain bisa berinteraksi sama aplikasinya secara terprogram. Misalnya, ada aplikasi absensi yang punya API yang minta nama lengkap pegawai sama rentang tanggal. Nah, begitu API ini dapet informasi itu, dia mengolah data absensi pegawai di dalamnya dan balikin jumlah jam kerja dalam rentang tanggal yang diminta.
Jadi, API web ini bisa dianggap kayak pintu gerbang gitu antara pengguna dan sumber daya di web.
● Klien
Klien merupakan pengguna yang ingin mengakses informasi dari web. Klien bisa berupa manusia atau sistem software yang pake API. Misalnya, si developer bisa bikin program yang akses data cuaca dari sistem data. Atau, kamu bisa akses data yang sama juga dari browsermu pas lagi buka situs cuaca langsung.
● Sumber Daya
Sumber daya adalah informasi yang disediakan oleh aplikasi-aplikasi berbeda untuk para kliennya. Sumber daya bisa berupa gambar, video, teks, angka, atau macem-macem data lainnya. Mesin yang kasih sumber daya ke klien juga disebut server. Nah, organisasi pake API buat berbagi sumber daya dan ngasih layanan web sekaligus ngelindungin keamanan, kontrol, dan autentikasi nya. Plus, API juga bantu nentuin klien mana aja yang bisa akses sumber daya internal tertentu.
Apa Itu REST?
Representational State Transfer (REST) merupakan sebuah konsep perangkat lunak yang menetapkan persyaratan mengenai cara kerja API. Awalnya, REST diciptakan sebagai panduan untuk mengelola komunikasi di dalam jaringan yang kompleks seperti internet. Anda dapat menggunakan arsitektur berbasis REST untuk mendukung komunikasi yang cepat dan handal sesuai dengan skala yang dibutuhkan. Arsitektur ini mudah diterapkan dan dimodifikasi, serta memberikan keterlihatan dan kemampuan untuk beroperasi di berbagai platform pada semua sistem API.
Para pengembang API dapat merancang API menggunakan berbagai arsitektur yang berbeda. API yang mengadopsi prinsip-prinsip arsitektur REST dikenal sebagai API REST. Layanan web yang menerapkan arsitektur REST disebut sebagai layanan web RESTful. Istilah "API RESTful" umumnya digunakan untuk merujuk pada API web yang mengikuti prinsip-prinsip REST. Meskipun demikian, istilah "API REST" dan "API RESTful" dapat digunakan secara bergantian.
Berikut ini adalah beberapa prinsip utama dalam gaya arsitektur REST:
Antarmuka seragam adalah prinsip dasar dari semua layanan web RESTful. Hal ini menunjukkan bahwa server mentransfer informasi dalam format standar. Dalam REST, informasi yang terstruktur disebut sebagai representasi. Format representasi ini dapat berbeda dengan format internal sumber daya yang disimpan di server. Sebagai contoh, server dapat menyimpan data dalam bentuk teks, tetapi mengirimkannya dalam format representasi HTML.
Prinsip Tampilan yang Sama menghadirkan empat kendala dalam arsitektur REST:
● Permintaan harus mengidentifikasi sumber daya. Hal ini dilakukan dengan menggunakan identifikasi sumber daya yang seragam.
● Klien harus memiliki informasi yang cukup tentang representasi sumber daya untuk melakukan modifikasi atau penghapusan jika diinginkan. Server memenuhi persyaratan ini dengan mengirimkan metadata yang menjelaskan sumber daya dengan lebih rinci.
● Klien harus menerima informasi tentang cara memproses representasi lebih lanjut. Server mencapainya dengan mengirimkan pesan deskriptif yang mandiri dan berisi metadata tentang cara terbaik bagi klien untuk menggunakannya.
● Klien harus menerima informasi tentang semua sumber daya terkait lainnya yang diperlukan untuk menyelesaikan tugas. Server mencapainya dengan menyertakan hyperlink di dalam representasi sehingga klien dapat menemukan sumber daya tambahan secara dinamis.
Dalam arsitektur REST, statelessness mengacu pada cara komunikasi di mana server menangani setiap permintaan klien secara independen tanpa bergantung pada permintaan sebelumnya. Klien dapat meminta sumber daya dalam setiap permintaan, dan setiap permintaan dianggap stateless atau terisolasi dari permintaan sebelumnya. Konsep ini mengimplikasikan bahwa server mampu memahami dan memenuhi permintaan tanpa melibatkan informasi sebelumnya.
Dalam arsitektur berlapis, klien dapat terhubung melalui perantara resmi antara klien dan server, dan tetap menerima respons dari server tersebut. Server juga dapat meneruskan permintaan ke server lain. Layanan web RESTful dapat dirancang untuk berjalan pada beberapa server dengan berbagai lapisan seperti keamanan, aplikasi, dan logika bisnis, yang bekerja sama untuk memenuhi permintaan klien. Lapisan ini tetap tersembunyi dari sudut pandang klien.
Layanan web RESTful mendukung caching, yaitu menyimpan beberapa respons pada klien atau perantara untuk meningkatkan waktu respons dari server. Sebagai contoh, bayangkan saat Anda mengunjungi situs web yang memiliki gambar header dan footer yang sama pada setiap halaman. Setiap kali Anda mengunjungi halaman baru, server harus mengirimkan kembali gambar yang sama. Untuk menghindari hal ini, klien dapat menyimpan gambar tersebut di cache setelah respons pertama, dan kemudian mengambilnya langsung dari cache. Layanan web RESTful mengontrol proses caching dengan menggunakan respons API yang menentukan apakah respons dapat di-cache atau tidak.
Dalam gaya arsitektur REST, server dapat sementara memperluas atau mengadaptasi fungsionalitas klien dengan mengirimkan kode pemrograman perangkat lunak ke klien. Sebagai contoh, saat Anda mengisi formulir pendaftaran di sebuah situs web, peramban Anda dapat langsung menyoroti kesalahan yang Anda buat, seperti kesalahan dalam nomor telepon. Hal ini dapat dicapai dengan mengirimkan kode dari server ke peramban.
Apa Manfaat Menggunakan RESTful API?
Sistem yang menggunakan API REST memiliki kemampuan untuk memperluas dengan efisien karena REST mengoptimalkan interaksi antara klien dan server. Dengan pendekatan tanpa keadaan (statelessness), server tidak perlu menyimpan informasi permintaan klien sebelumnya, sehingga membebaskan beban pada server. Selain itu, dengan penggunaan caching yang tepat baik secara sebagian maupun keseluruhan, beberapa interaksi antara klien dan server dapat dihindari. Semua fitur ini mendukung skalabilitas tanpa mengganggu kinerja komunikasi.
Layanan web RESTful mendukung pemisahan yang jelas antara klien dan server. Dalam arsitektur RESTful, komponen server dapat dipisahkan dan disederhanakan sehingga setiap bagian dapat berkembang secara independen. Perubahan pada platform atau teknologi yang digunakan di server tidak akan mempengaruhi aplikasi klien. Fleksibilitas semakin meningkat dengan kemampuan untuk melapis fungsi aplikasi. Sebagai contoh, pengembang dapat membuat perubahan pada lapisan basis data tanpa harus menulis ulang logika aplikasi.
API REST bersifat independen terhadap teknologi yang digunakan. Anda dapat mengembangkan aplikasi klien dan server menggunakan berbagai bahasa pemrograman tanpa harus mempengaruhi desain API. Anda juga dapat mengganti teknologi yang mendasari di kedua sisi tanpa mempengaruhi komunikasi antara klien dan server.
Bagaimana Cara Kerja RESTful API?
Fungsi dasar dari API RESTful mirip dengan menjelajah internet. Ketika klien ingin mendapatkan sumber daya, klien menghubungi server melalui API. Developer API memberikan panduan kepada klien tentang cara menggunakan API REST melalui dokumentasi aplikasi server. Berikut adalah langkah umum dalam setiap panggilan API REST:
● Klien mengirimkan permintaan ke server. Klien mengacu pada dokumentasi API untuk memformat permintaan agar dapat dipahami oleh server.
● Server mengautentikasi klien dan memeriksa apakah klien memiliki izin untuk melakukan permintaan tersebut.
● Server menerima permintaan dan memprosesnya secara internal.
● Server mengirimkan respons kepada klien. Respons tersebut menginformasikan kepada klien apakah permintaannya berhasil atau tidak. Respons juga berisi informasi yang diminta oleh klien.
Setiap permintaan API REST dan detail responsnya dapat sedikit berbeda tergantung pada bagaimana developer API merancang API tersebut.
Apa Isi Request Dari Server ke RESTful API?
RESTful API memerlukan permintaan untuk memuat komponen utama berikut:
Server mengidentifikasi setiap sumber daya dengan pengidentifikasi sumber daya yang unik. Untuk layanan REST, server biasanya melakukan identifikasi sumber daya dengan menggunakan Uniform Resource Locator (URL). URL menentukan jalur ke sumber daya. URL mirip dengan alamat situs web yang Anda masukkan ke peramban untuk mengunjungi halaman web mana pun. URL juga disebut titik akhir permintaan dan dengan jelas menentukan server yang dibutuhkan klien.
Developer sering mengimplementasikan API RESTful dengan menggunakan Hypertext Transfer Protocol (HTTP). Metode HTTP memberi tahu server hal-hal yang perlu dilakukan terhadap sumber daya. Berikut ini adalah empat metode HTTP umum:
● GET
Klien menggunakan GET untuk mengakses sumber daya yang berada di URL yang ditentukan pada server. Mereka dapat menyimpan permintaan GET dan mengirim parameter dalam permintaan API RESTful untuk menginstruksikan server memfilter data sebelum mengirim.
● POST
Klien menggunakan POST untuk mengirim data ke server. Mereka menyertakan representasi data dengan permintaan. Mengirim permintaan POST yang sama beberapa kali memiliki efek samping seperti membuat sumber daya yang sama beberapa kali.
● PUT
Klien menggunakan PUT untuk memperbarui sumber daya yang ada di server. Tidak seperti POST, mengirimkan permintaan PUT yang sama beberapa kali dalam layanan web RESTful memberikan hasil yang sama.
● DELETE
Klien menggunakan permintaan DELETE untuk menghapus sumber daya. Permintaan DELETE dapat mengubah status server. Namun, jika pengguna tidak memiliki autentikasi yang sesuai, permintaan akan gagal.
Header permintaan adalah pertukaran metadata antara klien dan server. Misalnya, header permintaan menunjukkan format permintaan dan respons, memberikan informasi tentang status permintaan, dan sebagainya.
Permintaan API REST mungkin menyertakan data untuk POST, PUT, dan metode HTTP lainnya agar berhasil.
Permintaan API RESTful dapat termasuk parameter yang memberi server lebih banyak detail tentang hal yang perlu dilakukan. Berikut ini adalah beberapa tipe parameter:
● Parameter jalur yang menentukan detail URL.
● Parameter kueri yang meminta informasi selengkapnya tentang sumber daya.
● Parameter cookie yang mengautentikasi klien dengan cepat.
Apakah Metode Autentikasi dari RESTful API?
Dalam layanan web RESTful, diperlukan autentikasi sebelum server dapat memberikan respons kepada klien. Autentikasi adalah proses untuk memverifikasi identitas. Misalnya, Anda dapat membuktikan identitas Anda dengan menunjukkan kartu identitas atau SIM. Demikian pula, klien layanan RESTful harus membuktikan identitas mereka kepada server untuk membangun kepercayaan.
Ada empat metode autentikasi yang umum digunakan dalam RESTful API:
HTTP memiliki beberapa skema autentikasi yang dapat digunakan langsung saat menerapkan API REST. Berikut ini dua skema yang umum digunakan:
a. Autentikasi dasar: Dalam autentikasi dasar, klien mengirimkan nama pengguna dan kata sandi dalam header permintaan. Header ini dienkripsi menggunakan metode base64, yang mengubah pasangan pengguna dan kata sandi menjadi serangkaian karakter untuk transmisi yang aman.
b. Autentikasi bearer: Autentikasi bearer mengacu pada proses memberikan akses melalui penggunaan token bearer. Token bearer biasanya berupa string karakter yang dihasilkan oleh server sebagai respons atas permintaan masuk. Klien mengirimkan token ini dalam header permintaan untuk mengakses sumber daya.
Kunci API adalah opsi autentikasi lain untuk API REST. Dalam metode ini, server memberikan nilai unik kepada klien pada saat pertama kali. Setiap kali klien mencoba mengakses sumber daya, API menggunakan kunci API tersebut untuk memverifikasi keasliannya. Meskipun kunci API cukup umum, namun keamanannya kurang karena kunci harus ditransmisikan oleh klien, yang berpotensi rentan terhadap pencurian dalam jaringan.
OAuth menggabungkan penggunaan kata sandi dan token untuk menciptakan akses yang sangat aman ke sistem apa pun. Server meminta kata sandi terlebih dahulu, kemudian meminta token tambahan untuk menyelesaikan proses otorisasi. Server dapat memeriksa token kapan saja dan juga dari waktu ke waktu dengan batas waktu dan cakupan tertentu.
Apa Isi Response Dari Server RESTful API?
Prinsip REST mewajibkan respons dari server mengandung komponen utama berikut:
Baris status berisi kode tiga digit yang mengindikasikan keberhasilan atau kegagalan permintaan. Misalnya, kode 2XX menunjukkan bahwa permintaan berhasil, sementara kode 4XX dan 5XX menunjukkan adanya kesalahan. Kode 3XX menunjukkan adanya pengalihan URL.
Berikut beberapa contoh kode status umum:
a. 200: Permintaan berhasil
Kode 200 ini bermakna sebagai kode respon dari keberhasilan HTTP, dan menunjukkan bahawa permintaan telah berhasil
b. 201: Permintaan metode POST berhasil
Kode 201 menunjukkan bahwa permintaan telah berhasil dan mengarah pada sumber daya.
c. 400: Permintaan salah yang tidak dapat diproses oleh server
Kode 400 menunjukkan jika server tidak dapat atau tidak akan memproses permintaan karena sesuatu yang dianggap sebagai kesalahan klien. Contohnya pada sintaks permintaan yang salah, pesan permintaan yang tidak valid, dsb.
d. 404: Sumber daya tidak ditemukan
Kode 404 Not Found, menunjukkan jika server tidak dapat menemukan sumber daya yang diminta. Selain itu, tautan yang mengarah ke page 404 biasanya kita kenal dengan sebutan tautan rusak atau mati dan dapat mengalami tautan pembusukan.
Isi pesan berisi representasi dari sumber daya yang diminta. Server akan memilih format representasi yang sesuai berdasarkan header permintaan yang diterima. Klien dapat meminta informasi dalam format XML atau JSON, yang menentukan bagaimana data ditulis dalam bentuk teks. Misalnya, jika klien meminta nama dan usia seseorang bernama John, server akan mengembalikan representasi JSON seperti ini:
'{"name":"John", "age":30}'
Selain itu, respons juga berisi header atau metadata mengenai respons tersebut. Header memberikan konteks tambahan tentang respons dan mencakup informasi seperti server, pengkodean, tanggal, dan jenis konten.
Bagaimana AWS dapat membantu Anda dengan manajemen RESTful API?
Jika kamu ingin menggunakan JWT (JSON Web Tokens) dan mengimplementasikannya dengan OAuth dalam permintaan HTTP menggunakan fetch(), ini adalah langkah-langkah yang bisa kamu ikuti:
Dalam langkah ini, kita bisa menganalisis data JSON yang diterima dan menggunakan nilainya sesuai kebutuhan.
Perlu diingat bahwa implementasi OAuth dapat berbeda tergantung pada penyedia layanan OAuth yang kita gunakan, jadi pastikan untuk mengacu pada dokumentasi mereka untuk langkah-langkah yang lebih spesifik dalam mendapatkan token akses dan mengirim permintaan HTTP yang memanfaatkannya.
Referensi