Apa itu API? Antaramuka pengaturcaraan aplikasi dijelaskan

API bermaksud antara muka pengaturcaraan aplikasi, konsep yang berlaku di mana-mana sahaja dari alat baris perintah hingga kod Java perusahaan hingga aplikasi web Ruby on Rails. API adalah cara untuk berinteraksi secara terprogram dengan komponen atau sumber perisian yang berasingan.

Kecuali anda menulis setiap baris kod dari awal, anda akan berinteraksi dengan komponen perisian luaran, masing-masing dengan API sendiri. Walaupun anda menulis sesuatu sepenuhnya dari awal, aplikasi perisian yang dirancang dengan baik akan mempunyai API dalaman untuk membantu mengatur kod dan menjadikan komponen lebih dapat digunakan semula. Dan terdapat banyak API awam yang membolehkan anda memanfaatkan fungsi yang dikembangkan di tempat lain di web.

Apa itu API?

API didefinisikan sebagai spesifikasi kemungkinan interaksi dengan komponen perisian. Apa maksudnya, sebenarnya? Nah, bayangkan bahawa kereta adalah komponen perisian. API-nya akan merangkumi maklumat tentang apa yang dapat dilakukannya — mempercepat, brek, menghidupkan radio, dan lain-lain. Ia juga merangkumi maklumat tentang bagaimana anda boleh membuatnya melakukan perkara-perkara tersebut. Sebagai contoh, untuk mempercepat, anda meletakkan kaki anda pada pedal gas dan tolak.

API tidak perlu menjelaskan apa yang berlaku di dalam mesin semasa anda meletakkan kaki di atas pemecut. Itulah sebabnya, jika anda belajar memandu kereta dengan enjin pembakaran dalaman, anda boleh berada di belakang roda kereta elektrik tanpa perlu mempelajari satu set kemahiran yang baru. The apa dan bagaimana maklumat datang bersama-sama dalam API definisi , yang abstrak dan berasingan daripada kereta itu sendiri.

Satu perkara yang perlu diingat adalah bahawa nama beberapa API sering digunakan untuk merujuk kepada spesifikasi interaksi dan komponen perisian sebenar yang anda berinteraksi. Ungkapan "API Twitter," misalnya, tidak hanya merujuk pada set peraturan untuk berinteraksi secara terprogram dengan Twitter, tetapi secara umum difahami sebagai hal yang Anda berinteraksi, seperti dalam "Kami sedang melakukan analisis mengenai tweet yang kami dapat dari API Twitter. "

API sebagai lapisan abstraksi

Untuk perisian, API secara harfiah ada di mana-mana. API beriringan dengan salah satu konsep paling asas dalam sains komputer: abstraksi. Abstraksi hanyalah cara mengatur kerumitan sistem agar tindakan yang rumit dapat ditangani dengan cara yang mudah. Fikirkan pengambilan ini seperti Amazon Dash Buttons, papan litar butang yang dikendalikan dengan bateri yang boleh anda gunakan untuk memesan staples dari Amazon. Ini seperti apa:

Anda memesan Butang Dash dari Amazon dan menggunakan aplikasi pada telefon pintar anda untuk mengaitkannya dengan rangkaian Wi-Fi, akaun Amazon anda, dan produk, katakanlah, tuala kertas jenama kegemaran anda. Kemudian, setiap kali anda ingin memesan lebih banyak tuala kertas, anda hanya menekan butang. Butang Dash menyambung ke Internet dan menghantar mesej untuk membuat pesanan di akaun anda. Beberapa hari kemudian, tuala kertas tiba di depan pintu rumah anda.

Seperti API, Dash Button adalah antara muka yang sangat senang yang menyembunyikan segala kerumitan di sebalik tabir. ID produk yang anda pesan mesti diambil dari beberapa pangkalan data. Alamat penghantaran anda mesti diambil dari akaun anda. Pusat pemenuhan terdekat yang menyimpan tuala kertas anda harus ditentukan, kemudian diberitahu untuk mengeluarkan barang dari stok yang ada dan membungkusnya. Akhirnya, pakej mesti dihantar melalui beberapa kombinasi kapal terbang, trak, dan van bersama dengan pakej lain dengan cara yang memastikan bahawa semua paket akan sampai ke destinasi mereka dengan cekap.

Sekarang bayangkan anda harus menyelaraskan semua perkara ini sebagai pelanggan. Anda tidak akan pernah memesan tuala kertas kerana terlalu rumit dan memakan masa dan anda mempunyai perkara yang lebih baik untuk dilakukan. Nasib baik, keseluruhan penderitaan disingkirkan daripada anda. Terdapat rantai panjang sistem komputer dan proses manusia yang saling berkaitan yang menjadikan tuala kertas itu muncul di depan pintu rumah anda, tetapi yang perlu anda fikirkan hanyalah menekan butang.

Ini seperti API untuk pengaturcara. Mereka memerlukan banyak kerumitan dan menentukan sekumpulan interaksi yang agak mudah yang boleh anda gunakan dan bukannya melakukan semuanya sendiri. Dalam mana-mana projek perisian, anda mungkin menggunakan puluhan jika tidak beratus-ratus API secara langsung, dan masing-masing API bergantung pada API lain dan sebagainya.

API awam dan integrasi API

API adalah konsep lama dalam pengaturcaraan komputer, dan mereka telah menjadi sebahagian daripada alat pemaju selama bertahun-tahun. Secara tradisional, API digunakan untuk menghubungkan komponen kod yang berjalan pada mesin yang sama. Dengan meningkatnya rangkaian di mana-mana, semakin banyak API awam, kadang-kadang disebut API terbuka, telah tersedia. API awam menghadap ke luar dan dapat diakses melalui Internet, yang membolehkan anda menulis kod yang berinteraksi dengan kod vendor lain dalam talian; proses ini dikenali sebagai integrasi API.

Jenis kod penyesuaian ini membolehkan pengguna mencampuradukkan dan memadankan fungsi dari pelbagai vendor pada sistem mereka sendiri. Sebagai contoh, jika anda menggunakan perisian automasi pemasaran Marketo, anda dapat menyegerakkan data anda di sana dengan fungsi CRM Salesforce.

"Terbuka" atau "umum" tidak boleh ditafsirkan sebagai makna "percuma" dalam konteks ini. Anda masih perlu menjadi pelanggan Marketo dan Salesforce agar berjaya. Tetapi ketersediaan API ini menjadikan integrasi menjadi proses yang lebih mudah daripada yang sebaliknya. ( mempunyai senarai banyak API awam yang mesti anda ketahui.)

Perkhidmatan dan API web

Anda mungkin mengingati istilah perkhidmatan eb dari awal tahun 00an dan berpendapat bahawa idea API terbuka terdengar serupa. Sebenarnya, perkhidmatan web adalah jenis API terbuka tertentu, yang memenuhi sekumpulan spesifikasi yang cukup ketat, termasuk yang ditentukan dalam Bahasa Penerangan Perkhidmatan Web (WSDL), varian XML.

Perkhidmatan web dimaksudkan untuk digunakan sebagai bagian dari arsitektur berorientasi layanan (SOA). Seperti yang dijelaskan oleh blog Nordic APIs, yang memberikan perkhidmatan web sesuatu yang tidak baik, kerana SOA tidak pernah memenuhi potensi mereka. Kemajuan dalam teknik yang digunakan untuk komunikasi perkhidmatan-ke-perkhidmatan - terutama REST yang lebih ringan, lebih fleksibel - juga meninggalkan perkhidmatan web agak ketinggalan dalam dunia API awam.

API REST

Perkhidmatan web pada awalnya dirancang untuk berkomunikasi menggunakan SOAP (Simple Object Access Protocol), protokol pesanan yang mengirimkan dokumen XML melalui HTTP. Namun, hari ini, kebanyakan API berasaskan web menggunakan REST — Transfer State Representative — sebagai gaya seni bina.

REST diperkenalkan secara formal oleh Roy Fielding dalam disertasi doktoralnya pada tahun 2000. Ini adalah sekumpulan komponen seni bina, prinsip reka bentuk, dan interaksi yang digunakan untuk membina sistem yang diedarkan yang melibatkan media dalam bentuk apa pun (teks, video, dll.). Pada dasarnya, REST adalah gaya sistem bangunan yang memungkinkan komunikasi yang fleksibel dan paparan maklumat di seluruh web sambil menyediakan struktur yang diperlukan untuk membina komponen tujuan umum dengan mudah.

Dalam REST API, sumber boleh menjadi apa-apa, tetapi contohnya termasuk pengguna, senarai tweet, dan hasil carian tweet terkini. Setiap sumber ini dapat dialamatkan pada pengecam sumber , yang dalam hal API REST berasaskan web biasanya URL, seperti //api.twitter.com/1.1/users/show?screen_name=twitterdev. Apabila aplikasi meminta sumber menggunakan pengenal, API memberikan perwakilan sumber saat ini ke aplikasi dalam format yang dapat digunakan oleh aplikasi, seperti gambar JPEG, halaman HTML, atau JSON.

Salah satu pembezaan besar REST adalah bahawa ia melibatkan pengiriman data ke aplikasi yang meminta. Walaupun ini memberikan fleksibiliti yang besar, yang membolehkan aplikasi melakukan apa sahaja yang dikehendaki dengan data, ia memerlukan kos kecekapan. Menghantar data melalui web untuk diproses agak lambat berbanding dengan memproses di mana data berada dan kemudian menghantar hasilnya.

Tentu saja, masalah dengan pendekatan "efisien" adalah bahawa sistem yang menghosting data harus mengetahui aplikasi apa yang ingin dilakukan dengannya sebelumnya. Oleh itu, untuk membina API yang mempunyai kegunaan dan fleksibiliti tujuan umum, REST adalah cara yang tepat.

Contoh API

Terdapat banyak API awam di luar sana untuk anda berinteraksi, banyak dari raksasa industri. Keupayaan untuk mengakses beberapa kod syarikat platform melalui program melalui API inilah yang menjadikan mereka platform, pada dasarnya. Beberapa contoh API yang menonjol termasuk:

  • API Google , yang membolehkan anda menghubungkan kod anda ke seluruh rangkaian perkhidmatan Google, dari Peta hingga Terjemahan. API sangat penting bagi Google sehingga mereka memperoleh Apigee, platform pengurusan API terkemuka.
  • API Facebook , yang membolehkan anda mengakses grafik sosial dan alat pemasaran Facebook secara terprogram. (Syarikat ini telah membatasi data pengguna apa yang dapat anda akses melalui API ini dalam kejatuhan dari Cambridge Analytica dan skandal lain.)

Untuk benar-benar memahami bagaimana API berfungsi, mari kita menyelami dua: API Java, yang digunakan oleh pengembang Java untuk berinteraksi dengan platform Java, dan API Twitter, API awam yang akan anda gunakan untuk berinteraksi dengan sosial perkhidmatan rangkaian.

API Java

Java API adalah perpustakaan komponen perisian yang tersedia "di luar kotak" untuk siapa saja yang telah memasang Java Development Kit. Komponen ini melaksanakan tugas biasa dan secara amnya meningkatkan produktiviti kerana pengaturcara tidak harus mulai dari awal setiap saat. Salah satu komponen asas yang digunakan dalam perisian adalah sesuatu yang disebut Daftar, yang, seperti yang anda jangkakan, melacak senarai item. API Java menentukan apa yang dapat anda lakukan dengan Daftar: tambahkan item, susun senarai, tentukan apakah item ada dalam senarai, dll. Ia juga menentukan cara melakukan tindakan tersebut. Untuk menyusun Senarai, anda perlu menentukan bagaimana anda mahu Senarai disusun: mengikut abjad, menurun angka, warna paling terang hingga kusam, dll.

API Twitter

API Twitter adalah API JSON berasaskan web yang membolehkan pembangun berinteraksi secara teratur dengan data Twitter. Tidak seperti Java API, yang termasuk dalam Java Development Kit, Twitter API adalah API berasaskan web. Ia mesti diakses dengan membuat permintaan melalui Internet ke perkhidmatan yang dihoskan oleh Twitter.

Dengan API berasaskan web seperti Twitter, aplikasi Anda mengirimkan permintaan HTTP, seperti yang dilakukan oleh penyemak imbas web. Tetapi bukannya respons dihantar sebagai laman web, untuk pemahaman manusia, ia dikembalikan dalam format yang dapat dihuraikan dengan mudah oleh aplikasi. Terdapat pelbagai format untuk tujuan ini, dan Twitter menggunakan format yang popular dan mudah digunakan yang disebut JSON. (Sekiranya anda tidak biasa dengan JSON, anda mungkin ingin menghabiskan beberapa minit untuk membacanya di sini.)

Salah satu elemen asas dalam Twitter adalah tweet. API Twitter memberitahu anda apa yang dapat anda lakukan dengan tweet: cari tweet, buat tweet, kegemaran tweet. Ia juga memberitahu anda bagaimana melakukan tindakan ini. Untuk mencari tweet, anda perlu menentukan kriteria carian anda: istilah atau hashtag untuk dicari, geolokasi, bahasa, dll.

Reka bentuk API

Reka bentuk API adalah proses di mana "apa" dan "bagaimana" API dirumuskan. Seperti halnya apa pun yang dapat dibuat, berbagai tahap pemikiran dan perawatan dimasukkan ke dalam reka bentuk API, yang menghasilkan berbagai tingkat kualitas API. API yang dirancang dengan baik mempunyai tingkah laku yang konsisten, mempertimbangkan konteksnya, dan mengingat keperluan pengguna mereka.

Tingkah laku yang konsisten dalam API sangat mempengaruhi kecepatan di mana ia dapat dipelajari dan kemungkinan pengaturcara melakukan kesalahan ketika menggunakannya. Umumnya, API yang melakukan tindakan serupa harus berkelakuan serupa, tanpa mengira perbezaan teknikalnya. Untuk contoh API yang tidak konsisten, mari kita lihat dua cara untuk menambahkan item ke Senarai di Java:

Walaupun kedua-dua kaedah menambahkan item ke dalam senarai melakukan perkara yang sama, jenis pengembaliannya (boolean dan batal) berbeza. Pembangun yang menggunakan API ini sekarang harus melacak kaedah yang mengembalikan jenis mana, menjadikan API lebih sukar dipelajari dan penggunaannya lebih rentan terhadap ralat. Ini juga bermaksud kod yang menggunakan kaedah ini menjadi kurang fleksibel, kerana ia harus berubah jika anda ingin menukar cara anda menambahkan elemen.

Mempertimbangkan konteks adalah bentuk konsistensi lain, walaupun ada kaitan dengan faktor-faktor di luar API. Contoh bukan perisian yang hebat adalah bagaimana peraturan jalan raya - lalu lintas kanan atau lalu lintas kiri - mempengaruhi reka bentuk kereta untuk pelbagai negara. Pereka kereta mengambil kira faktor persekitaran itu semasa mencari tempat duduk pemandu di sebelah kanan atau kiri kereta.