API atau Application Programming Interface menyajikan fungsi dan aturan yang memungkinkan interaksi dan komunikasi antar aplikasi yang berbeda. Antarmuka ini memfasilitasi integrasi aplikasi, memungkinkan pengembang untuk membuat produk digital yang kuat.
API menengahi antara aplikasi melalui permintaan dan tanggapan. Misalnya, pendaftaran dalam aplikasi melalui akun Twitter pengguna yang ada terjadi melalui API Twitter yang telah diintegrasikan pengembang ke dalam aplikasi. API menggunakan berbagai protokol dan arsitektur untuk mengirim permintaan dan tanggapan:
- XML-RPC — memungkinkan pertukaran fungsi antar jaringan. XML-RPC menggunakan XML untuk menggambarkan tanggapan/permintaan dan protokol HTTP untuk mentransfer informasi dari klien ke server.
- JSON-RPC adalah RPC ringan yang mirip dengan XML. Di sini protokol dikodekan dalam JSON; itu memungkinkan menerima panggilan ke server dengan respons asinkron.
- SOAP — protokol akses objek sederhana untuk bertukar informasi terstruktur saat mengimplementasikan layanan web di jaringan komputer. SOAP menggunakan XML untuk otentikasi, otorisasi, dan komunikasi proses pada sistem operasi. Hal ini memungkinkan klien untuk memanggil layanan web dan menerima tanggapan terlepas dari platform dan bahasa.
- REST API (representative state transfer) — gaya arsitektur yang menggunakan implementasi client-server secara independen. REST menggunakan protokol HTTP untuk komunikasi.
Dalam posting ini, kami fokus pada REST API, mendefinisikannya, dan menganalisis perbedaannya dari API lain.
Mendefinisikan REST API
REST adalah gaya arsitektur untuk merancang API melalui protokol HTTP. Manfaat utamanya adalah fleksibilitasnya yang luar biasa.
Pengembang menggunakan REST API di mana pun ada kebutuhan untuk menyediakan data kepada pengguna aplikasi web atau situs langsung dari server. Komponen utama REST API:
- Klien — klien atau program yang diluncurkan di sisi pengguna (pada perangkatnya) yang memulai komunikasi.
- Server — server yang menggunakan API sebagai akses ke fungsi dan datanya.
- Sumber — konten apa pun (video, teks, gambar) yang dikirimkan server ke klien.
Cara kerja REST API
REST API berkomunikasi melalui permintaan HTTP, menyelesaikan fungsi berikut — membuat, membaca, memperbarui, dan menghapus data. Mereka juga dikenal sebagai operasi CRUD. REST menyediakan informasi tentang sumber daya yang diminta dan menggunakan empat metode untuk menjelaskan apa yang harus dilakukan dengan sumber daya:
POST — membuat sumber daya;
GET — mendapatkan sumber daya;
PUT — memperbarui sumber daya;
DELETE — menghapus sumber daya.
Sumber
Sumber daya adalah konsep penting dalam REST API, sebuah abstraksi informasi. Itu bisa berupa informasi apa saja: dokumen, gambar, layanan sementara.
Status sumber daya pada saat tertentu dikenal sebagai representasi sumber daya yang terdiri dari data, metadata yang menjelaskan data, dan tautan hypermedia untuk membantu pelanggan berpindah ke status berikutnya.
Informasi dapat dikirimkan ke klien dalam berbagai format: JSON, HTML, XLT, Python, atau teks biasa. Yang paling populer dan digunakan adalah JSON karena dapat dibaca oleh manusia dan mesin, dan tidak menggunakan bahasa.
Untuk mengakses sumber daya, klien perlu membuat permintaan. Setelah menerimanya, server akan menghasilkan respons dengan data yang disandikan tentang sumber daya.
Struktur permintaan mencakup empat komponen utama: metode HTTP (CRUD yang kami sebutkan sebelumnya), titik akhir, header, dan isi.
Metode HTTP menjelaskan apa yang harus dilakukan dengan sumber daya. Tepat di atas, kami menyebutkan empat metode yang tersedia: POST, GET, PUT, DELETE.
Titik akhir berisi URI — Uniform Resource Identifier, yang menunjukkan bagaimana dan di mana sumber daya dapat ditemukan. URL atau Uniform Resource Location adalah jenis URI yang paling umum, yang mewakili alamat web lengkap.
Header berisi data yang terkait dengan klien dan server. Header menyertakan data otentikasi: kunci API, nama, alamat IP milik komputer tempat server diinstal, dan juga informasi tentang format respons.
Badan digunakan untuk mengirim informasi tambahan ke server, seperti data yang ingin Anda tambahkan.
Prinsip REST API
REST tidak terikat pada teknologi atau platform tertentu. Ini tidak bergantung pada bahasa. Itu juga tidak menentukan secara tepat bagaimana membangun API. Tapi menggunakan enam kendala arsitektur. Antarmuka dapat disebut REST API yang valid dengan mengikuti batasan tersebut. Mereka menjelaskan bagaimana server memproses permintaan dan menanggapinya.
Server klien
REST API mengimplementasikan gaya arsitektur client-server. Klien mengirim permintaan untuk sumber daya dan tidak terkait dengan penyimpanan data. Penyimpanan data tetap berada di dalam server. Server tidak terlibat dalam komunikasi dengan antarmuka pengguna. Klien dan server berkembang saling bergantung. Faktor ini membuat REST lebih fleksibel dan terukur.
Antarmuka seragam
Antarmuka terpadu merupakan faktor penting yang membedakan REST API. Ini menyatakan bahwa ada satu cara untuk berkomunikasi dengan server, tidak menyiratkan jenis aplikasi dan perangkat.
Antarmuka yang seragam memiliki empat prinsip:
- Identifikasi sumber daya. Setiap sumber daya harus memiliki identifikasi yang independen dari status sumber daya. URL bertindak sebagai pengenal.
- Manipulasi sumber daya melalui representasi. Representasi sumber daya (yang dimiliki klien) berisi data yang diperlukan untuk menghapus atau memodifikasi sumber daya. Klien mengirimkan representasi bahwa server (objek JSON) perlu memodifikasi, menghapus, atau menambahkan.
- Pesan deskripsi diri. Pesan tersebut memiliki semua informasi untuk penerima untuk pemahamannya. Tidak ada informasi tambahan yang diperlukan dalam dokumentasi atau pesan terpisah. Setiap pesan memiliki informasi yang cukup bagi server untuk mengurai permintaan.
- Hypermedia sebagai mesin keadaan aplikasi. Hypermedia memerlukan penggunaan tautan untuk setiap respons sehingga klien dapat menemukan sumber daya lain. Di REST, hypermedia digunakan untuk semua interaksi.
Tanpa kewarganegaraan
Ini berarti bahwa server tidak berisi data tentang klien. Semua informasi yang diperlukan untuk pemrosesan permintaan disertakan dalam permintaan. Klien menyimpan semua informasi sesi.
Dapat disimpan dalam cache
Setiap respons harus memiliki informasi yang memberi tahu apakah itu dapat di-cache atau tidak dan periode respons dapat di-cache. Jika dapat di-cache, maka dalam permintaan serupa, klien dapat menggunakan data yang sama tanpa berulang kali mengirim permintaan ke server. Ini membantu meningkatkan kinerja dan ketersediaan.
Sistem berlapis
REST mengimplementasikan hierarki lapisan, yang menciptakan batasan tertentu pada perilaku komponen. Dalam sistem berlapis, komponen hanya dapat melihat komponen yang terletak di level terdekat dan yang berinteraksi dengannya.
Kode sesuai permintaan
Ini adalah fitur opsional yang memungkinkan klien mengunduh dan mengeksekusi kode.
Apa yang membedakan REST API?
Enam prinsip REST API dapat dianggap sebagai perbedaan utama antara antarmuka ini dan tipe lainnya. Selain itu, beberapa parameter membedakan REST.
Pertama, esensi REST menentukan ketidakcocokannya dengan tipe lain. Ini adalah gaya arsitektur di mana arsitektur mewakili serangkaian persyaratan yang harus Anda ikuti untuk menyediakan layanan web RESTful. Misalnya, SOAP dan RPC adalah protokol pesan yang menjelaskan pesan. Berbeda dengan gaya arsitektur yang hanya menetapkan persyaratan (constraints) pesan yang harus dipenuhi.
Struktur
Biasanya, API mengikuti format app-to-app, sedangkan REST mengikuti struktur yang berbeda — Client-Server. Klien dan server berkembang secara independen, memberikan lebih banyak fleksibilitas dalam bekerja.
Format pertukaran pesan
API biasanya menggunakan format pesan tertentu; misalnya, SOAP menggunakan XML. REST tidak mengikuti prinsip yang begitu ketat. Itu dapat menggunakan hampir semua format untuk bertukar data. Namun, JSON sekarang yang paling populer.
Ada alasan yang jelas di balik popularitas JSON — format pertukaran data dapat dibaca manusia dan mudah dianalisis. JSON tidak bergantung pada bahasa, dan Anda dapat menggunakannya dengan bahasa apa pun selain JavaScript.
Fleksibilitas
REST adalah gaya arsitektur yang fleksibel, sehingga pengembang banyak menggunakannya. Dibandingkan dengan SOAP — protokol yang lebih kompleks dengan fitur keamanan canggih yang membutuhkan lebih banyak bandwidth, REST terdiri dari panduan sederhana yang memungkinkan pengembang untuk menggunakan persyaratan tersebut dalam format mereka. Arsitekturnya memberikan kinerja tinggi, membuatnya sangat diminati untuk perangkat seluler, di mana kecepatan unduh penting.
Seperti yang kita lihat, REST memiliki keunggulan tertentu dibandingkan API lain yang dikenal. Itulah sebabnya semua perusahaan terkemuka seperti Twitter dan Google telah menerapkannya untuk produk mereka. Bagaimanapun, ini adalah cara yang ideal dan mudah untuk mentransfer data ke pengembang di seluruh dunia dan mekanisme yang telah terbukti untuk menciptakan antarmuka yang efisien dan skalabel untuk pengembangan perangkat lunak.