Apa itu API? Antarmuka pemrograman aplikasi menjelaskan

API adalah singkatan dari antarmuka pemrograman aplikasi, sebuah konsep yang berlaku di mana saja mulai dari alat baris perintah hingga kode Java perusahaan hingga aplikasi web Ruby on Rails. API adalah cara untuk berinteraksi secara terprogram dengan komponen atau sumber daya perangkat lunak yang terpisah.

Kecuali Anda menulis setiap baris kode dari awal, Anda akan berinteraksi dengan komponen perangkat lunak eksternal, masing-masing dengan API-nya sendiri. Meskipun Anda benar-benar menulis sesuatu dari awal, aplikasi perangkat lunak yang dirancang dengan baik akan memiliki API internal untuk membantu mengatur kode dan membuat komponen lebih dapat digunakan kembali. Dan ada banyak API publik yang memungkinkan Anda memanfaatkan fungsionalitas yang dikembangkan di tempat lain melalui web.

Apa itu API?

API didefinisikan sebagai spesifikasi kemungkinan interaksi dengan komponen perangkat lunak. Apa sebenarnya maksudnya itu? Nah, bayangkan mobil adalah komponen perangkat lunak. API-nya akan mencakup informasi tentang apa yang dapat dilakukannya — mempercepat, mengerem, menghidupkan radio, dll. API tersebut juga mencakup informasi tentang bagaimana Anda dapat membuatnya melakukan hal-hal itu. Misalnya, untuk berakselerasi, Anda menginjak pedal gas dan mendorong.

API tidak harus menjelaskan apa yang terjadi di dalam mesin saat Anda menginjak pedal gas. Itulah sebabnya, jika Anda belajar mengemudikan mobil dengan mesin pembakaran internal, Anda bisa berada di belakang kemudi mobil listrik tanpa harus mempelajari keahlian yang sama sekali baru. Informasi apa dan bagaimana berkumpul dalam definisi API , yang abstrak dan terpisah dari mobil itu sendiri.

Satu hal yang perlu diingat adalah bahwa nama beberapa API sering kali digunakan untuk merujuk pada spesifikasi interaksi dan komponen perangkat lunak aktual yang Anda gunakan untuk berinteraksi. Frasa "API Twitter", misalnya, tidak hanya mengacu pada serangkaian aturan untuk berinteraksi secara terprogram dengan Twitter, tetapi secara umum dipahami sebagai hal yang Anda gunakan untuk berinteraksi, seperti dalam "Kami melakukan analisis pada tweet yang kami dapatkan dari API Twitter. ”

API sebagai lapisan abstraksi

Dalam hal perangkat lunak, API benar-benar ada di mana-mana. API berjalan seiring dengan salah satu konsep paling mendasar dalam ilmu komputer: abstraksi. Abstraksi hanyalah cara untuk mengatur kompleksitas sistem sehingga tindakan yang rumit dapat ditangani dengan cara yang sederhana. Pikirkan abstraksi ini seperti Tombol Dasbor Amazon tersebut, papan sirkuit tombol tekan yang dioperasikan dengan baterai yang dapat Anda gunakan untuk memesan staples dari Amazon. Seperti inilah penampilan mereka:

Anda memesan Tombol Dasbor dari Amazon dan menggunakan aplikasi di ponsel cerdas Anda untuk mengaitkannya dengan jaringan Wi-Fi Anda, akun Amazon Anda, dan produk, misalnya, merek handuk kertas favorit Anda. Kemudian, kapan pun Anda ingin memesan lebih banyak handuk kertas, Anda tinggal menekan tombolnya. Tombol Dash terhubung ke Internet dan mengirimkan pesan untuk melakukan pemesanan di akun Anda. Beberapa hari kemudian, handuk kertas tiba di depan pintu Anda.

Seperti API, Tombol Dasbor adalah antarmuka yang sangat sederhana yang menyembunyikan semua jenis kerumitan di balik layar. ID produk yang Anda pesan harus diambil dari beberapa database. Alamat pengiriman Anda harus ditarik dari akun Anda. Pusat pemenuhan terdekat yang menyimpan handuk kertas Anda harus ditentukan, kemudian diberi tahu untuk menghapus item dari stok yang tersedia dan mengemasnya. Terakhir, paket harus dialihkan melalui beberapa kombinasi pesawat terbang, truk, dan van bersama dengan paket lain dengan cara yang memastikan bahwa semua paket akan mencapai tujuannya secara efisien.

Sekarang bayangkan Anda harus mengoordinasikan semua hal ini sebagai pelanggan. Anda tidak akan pernah memesan handuk kertas karena terlalu rumit dan memakan waktu serta Anda memiliki pekerjaan yang lebih baik. Untungnya, seluruh cobaan ini dipisahkan dari Anda. Ada rantai panjang sistem komputer dan proses manusia yang saling berhubungan yang membuat handuk kertas itu muncul di depan pintu Anda, tetapi yang harus Anda pikirkan hanyalah menekan sebuah tombol.

Seperti inilah API bagi programmer. Mereka mengambil kerumitan yang luar biasa dan menentukan serangkaian interaksi yang relatif sederhana yang dapat Anda manfaatkan daripada melakukan semuanya sendiri. Dalam proyek perangkat lunak apa pun, Anda kemungkinan besar menggunakan puluhan bahkan ratusan API secara langsung, dan masing-masing API tersebut bergantung pada API lain dan seterusnya.

API Publik dan integrasi API

API adalah konsep lama dalam pemrograman komputer, dan telah menjadi bagian dari perangkat pengembang selama bertahun-tahun. Secara tradisional, API digunakan untuk menghubungkan komponen kode yang berjalan pada mesin yang sama. Dengan munculnya jaringan di mana-mana, semakin banyak API publik, terkadang disebut API terbuka, telah tersedia. API publik menghadap ke luar dan dapat diakses melalui Internet, memungkinkan Anda untuk menulis kode yang berinteraksi dengan kode vendor lain secara online; proses ini dikenal sebagai integrasi API.

Jenis mashup kode ini memungkinkan pengguna untuk mencampur dan mencocokkan fungsionalitas dari vendor yang berbeda di sistem mereka sendiri. Misalnya, jika Anda menggunakan perangkat lunak otomatisasi pemasaran Marketo, Anda dapat menyinkronkan data Anda di sana dengan fungsionalitas CRM Salesforce.

"Terbuka" atau "publik" tidak boleh diartikan sebagai "gratis" dalam konteks ini. Anda masih harus menjadi pelanggan Marketo dan Salesforce agar ini berfungsi. Namun ketersediaan API ini membuat integrasi menjadi proses yang jauh lebih sederhana daripada sebelumnya. ( memiliki daftar bagus API publik yang harus Anda ketahui.)

Layanan web dan API

Anda mungkin ingat istilah layanan w eb dari awal tahun 00-an dan berpikir bahwa gagasan API terbuka terdengar sangat mirip. Faktanya, layanan web adalah jenis tertentu dari API terbuka, yang memenuhi sekumpulan spesifikasi yang cukup kaku, termasuk yang ditentukan dalam Bahasa Deskripsi Layanan Web (WSDL), varian XML.

Layanan web dimaksudkan untuk digunakan sebagai bagian dari arsitektur berorientasi layanan (SOA). Seperti yang dijelaskan oleh blog Nordic APIs, hal itu memberi layanan web nama yang buruk, karena SOA tidak pernah memenuhi potensinya. Kemajuan dalam teknik yang digunakan untuk komunikasi layanan-ke-layanan — terutama REST yang lebih ringan dan lebih fleksibel — juga telah meninggalkan layanan web agak tertinggal di dunia API publik.

REST API

Layanan web pada awalnya dirancang untuk berkomunikasi menggunakan SOAP (Simple Object Access Protocol), protokol perpesanan yang mengirimkan dokumen XML melalui HTTP. Namun, saat ini, sebagian besar API berbasis web menggunakan REST — Representational State Transfer — sebagai gaya arsitektur.

REST secara resmi diperkenalkan oleh Roy Fielding dalam disertasi doktoralnya pada tahun 2000. Ini adalah sekumpulan komponen arsitektur, prinsip desain, dan interaksi yang digunakan untuk membangun sistem terdistribusi yang melibatkan media dalam bentuk apa pun (teks, video, dll.). Pada intinya, REST adalah gaya membangun sistem yang memungkinkan komunikasi fleksibel dan tampilan informasi di seluruh web sambil menyediakan struktur yang diperlukan untuk dengan mudah membangun komponen tujuan umum.

Dalam REST API, sumber daya bisa berupa apa saja, tetapi contohnya termasuk pengguna, daftar tweet, dan hasil pencarian tweet saat ini. Masing-masing sumber daya ini dapat dialamatkan pada pengenal sumber daya , yang dalam kasus REST API berbasis web biasanya berupa URL, seperti //api.twitter.com/1.1/users/show?screen_name=twitterdev. Saat aplikasi meminta sumber daya menggunakan pengenal, API mengirimkan representasi saat ini dari sumber daya tersebut ke aplikasi dalam format yang dapat digunakan aplikasi, seperti gambar JPEG, halaman HTML, atau JSON.

Salah satu pembeda besar REST adalah ia melibatkan pengiriman data ke aplikasi yang meminta. Meskipun hal ini memberikan fleksibilitas yang tinggi, memungkinkan aplikasi untuk melakukan apa pun yang diinginkannya dengan data, hal itu mengorbankan efisiensi. Pengiriman data melalui web untuk diproses cukup lambat dibandingkan dengan melakukan pemrosesan di mana data berada dan kemudian mengirimkan hasilnya.

Tentu saja, masalah dengan pendekatan "efisien" adalah bahwa sistem yang menghosting data perlu mengetahui aplikasi apa yang ingin dilakukan sebelumnya. Jadi, untuk membangun API yang memiliki kegunaan dan fleksibilitas untuk tujuan umum, REST adalah cara yang harus dilakukan.

Contoh API

Ada banyak API publik di luar sana yang dapat Anda gunakan untuk berinteraksi, banyak dari raksasa industri. Kemampuan untuk mengakses kode beberapa perusahaan platform secara terprogram melalui API adalah yang menjadikan mereka platform, pada dasarnya. Beberapa contoh API yang menonjol meliputi:

  • Google API , yang memungkinkan Anda menghubungkan kode Anda ke seluruh rangkaian layanan Google, dari Maps hingga Translate. API sangat penting bagi Google sehingga mereka mengakuisisi Apigee, platform manajemen API terkemuka.
  • API Facebook , yang memungkinkan Anda mengakses grafik sosial dan alat pemasaran Facebook secara terprogram. (Perusahaan telah membatasi data pengguna apa yang dapat Anda akses melalui API ini sebagai akibat dari Cambridge Analytica dan skandal lainnya.)

Untuk benar-benar memahami cara kerja API, mari selami dua: Java API, yang digunakan pengembang Java untuk berinteraksi dengan platform Java, dan Twitter API, API publik yang akan Anda gunakan untuk berinteraksi dengan sosial. layanan jaringan.

API Java

Java API adalah pustaka komponen perangkat lunak yang tersedia "di luar kotak" bagi siapa saja yang telah menginstal Java Development Kit. Komponen ini menerapkan tugas-tugas umum dan umumnya meningkatkan produktivitas karena pemrogram tidak harus memulai dari awal setiap saat. Salah satu komponen dasar yang digunakan dalam perangkat lunak adalah sesuatu yang disebut Daftar, yang, seperti yang Anda duga, melacak daftar item. Java API mendefinisikan apa yang dapat Anda lakukan dengan List: tambahkan item, urutkan daftar, tentukan apakah item ada dalam daftar, dll. API juga menentukan cara melakukan tindakan tersebut. Untuk mengurutkan Daftar, Anda perlu menentukan bagaimana Anda ingin Daftar diurutkan: menurut abjad, menurun secara numerik, warna paling terang hingga paling pudar, dll.

API Twitter

API Twitter adalah JSON API berbasis web yang memungkinkan pengembang berinteraksi secara terprogram dengan data Twitter. Berbeda dengan Java API, yang disertakan dalam Java Development Kit, Twitter API adalah API berbasis web. Ini harus diakses dengan membuat permintaan melalui Internet ke layanan yang dihosting Twitter.

Dengan API berbasis web seperti Twitter, aplikasi Anda mengirimkan permintaan HTTP, seperti yang dilakukan browser web. Namun, alih-alih respons dikirimkan sebagai laman web, untuk pemahaman manusia, respons dikembalikan dalam format yang dapat diurai dengan mudah oleh aplikasi. Berbagai format tersedia untuk tujuan ini, dan Twitter menggunakan format yang populer dan mudah digunakan yang disebut JSON. (Jika Anda tidak terbiasa dengan JSON, Anda mungkin ingin meluangkan beberapa menit untuk membacanya di sini.)

Salah satu elemen dasar di Twitter adalah tweet. API Twitter memberi tahu Anda apa yang dapat Anda lakukan dengan tweet: mencari tweet, membuat tweet, memfavoritkan tweet. Ini juga memberi tahu Anda cara melakukan tindakan ini. Untuk mencari tweet, Anda perlu menentukan kriteria pencarian Anda: istilah atau hashtag yang akan dicari, geolokasi, bahasa, dll.

Desain API

Desain API adalah proses di mana "apa" dan "bagaimana" dari API dirumuskan. Seperti hal lain yang dapat dibuat, berbagai tingkat pemikiran dan perhatian dimasukkan ke dalam desain API, menghasilkan berbagai tingkat kualitas API. API yang dirancang dengan baik memiliki perilaku yang konsisten, mempertimbangkan konteksnya, dan memperhatikan kebutuhan penggunanya.

Perilaku yang konsisten dalam API sangat memengaruhi kecepatan pembelajaran dan kemungkinan pemrogram membuat kesalahan saat menggunakannya. Umumnya, API yang melakukan tindakan serupa harus berperilaku serupa, terlepas dari perbedaan teknisnya. Untuk contoh API yang tidak konsisten, mari kita lihat dua cara untuk menambahkan item ke List di Java:

Meskipun dua metode penambahan item ke daftar melakukan hal yang sama, tipe kembaliannya (boolean dan void) berbeda. Pengembang yang menggunakan API ini sekarang harus melacak metode mana yang mengembalikan tipe mana, membuat API lebih sulit dipelajari dan penggunaannya lebih rentan kesalahan. Ini juga berarti kode yang menggunakan metode ini menjadi kurang fleksibel, karena harus berubah jika Anda ingin mengganti cara Anda menambahkan elemen.

Mempertimbangkan konteks adalah bentuk lain dari konsistensi, meskipun ini berkaitan dengan faktor-faktor di luar API. Contoh bagus non-perangkat lunak dari hal ini adalah bagaimana aturan jalan — lalu lintas kanan atau kiri — memengaruhi desain mobil untuk berbagai negara. Perancang mobil mempertimbangkan faktor lingkungan tersebut saat menempatkan kursi pengemudi di sisi kanan atau kiri mobil.