Apa itu API? Tolong gunakan bahasa inggris.

Sebelum saya mempelajari pengembangan perangkat lunak, API terdengar seperti bir.

Hari ini saya sangat sering menggunakan istilah tersebut sehingga saya sebenarnya baru-baru ini mencoba memesan API di bar.

Tanggapan bartender adalah membuang 404: sumber daya tidak ditemukan.

Saya bertemu banyak orang, baik yang bekerja di bidang teknologi maupun di tempat lain, yang memiliki pemahaman yang agak kabur atau salah tentang arti istilah yang cukup umum ini.

Secara teknis, API adalah singkatan dari Application Programming Interface . Di beberapa titik atau lainnya, sebagian besar perusahaan besar telah membangun API untuk pelanggan mereka, atau untuk penggunaan internal.

Tapi bagaimana Anda menjelaskan API dalam bahasa Inggris biasa? Dan adakah makna yang lebih luas daripada yang digunakan dalam pengembangan dan bisnis? Pertama, mari mundur dan lihat cara kerja web itu sendiri.

WWW dan server jarak jauh

Ketika saya berpikir tentang Web, saya membayangkan jaringan besar server yang terhubung .

Setiap halaman di internet disimpan di suatu tempat di server jarak jauh. Server jarak jauh tidak begitu mistis - itu hanya bagian dari komputer jarak jauh yang dioptimalkan untuk memproses permintaan.

Untuk meletakkan segala sesuatunya dalam perspektif, Anda dapat menjalankan server di laptop Anda yang mampu melayani seluruh situs web ke Web (pada kenyataannya, server lokal adalah apa yang digunakan para insinyur untuk mengembangkan situs web sebelum merilisnya ke publik).

Saat Anda mengetik www.facebook.com di browser Anda, permintaan akan dikirim ke server jarak jauh Facebook. Setelah browser Anda menerima respons, itu menafsirkan kode dan menampilkan halaman.

Untuk browser, juga dikenal sebagai klien , server Facebook adalah API. Ini berarti bahwa setiap kali Anda mengunjungi halaman di Web, Anda berinteraksi dengan beberapa API server jarak jauh.

API tidak sama dengan server jarak jauh - melainkan merupakan bagian dari server yang menerima permintaan dan mengirim tanggapan .

API sebagai cara untuk melayani pelanggan Anda

Anda mungkin pernah mendengar tentang perusahaan yang mengemas API sebagai produk. Misalnya, Weather Underground menjual akses ke API data cuaca.

Contoh skenario: Situs web bisnis kecil Anda memiliki formulir yang digunakan untuk mendaftarkan klien untuk janji temu. Anda ingin memberi klien Anda kemampuan untuk secara otomatis membuat acara kalender Google dengan detail untuk janji temu tersebut.

Penggunaan API: Idenya adalah membuat server situs web Anda berbicara langsung ke server Google dengan permintaan untuk membuat acara dengan detail yang diberikan. Server Anda kemudian akan menerima tanggapan Google, memprosesnya, dan mengirimkan kembali informasi yang relevan ke browser, seperti pesan konfirmasi kepada pengguna.

Alternatifnya, browser Anda sering kali dapat mengirim permintaan API langsung ke server Google dengan melewati server Anda.

Apa perbedaan API Google Kalender ini dengan API server jarak jauh lainnya di luar sana?

Dalam istilah teknis , perbedaannya adalah format permintaan dan tanggapannya.

Untuk merender seluruh laman web, browser Anda mengharapkan respons dalam HTML, yang berisi kode presentasi, sementara panggilan API Google Kalender hanya akan mengembalikan data - kemungkinan dalam format seperti JSON .

Jika server situs web Anda membuat permintaan API, maka server situs web Anda adalah klien (mirip dengan browser Anda yang menjadi klien saat Anda menggunakannya untuk menavigasi ke situs web).

Dari perspektif pengguna Anda, API memungkinkan mereka menyelesaikan tindakan tanpa meninggalkan situs web Anda.

Sebagian besar situs web modern menggunakan setidaknya beberapa API pihak ketiga.

Banyak masalah sudah memiliki solusi pihak ketiga, baik itu dalam bentuk perpustakaan atau layanan. Seringkali lebih mudah dan lebih dapat diandalkan untuk menggunakan solusi yang ada.

Tidak jarang tim pengembangan memecah aplikasi mereka menjadi beberapa server yang saling berkomunikasi melalui API. Server yang menjalankan fungsi pembantu untuk server aplikasi utama biasanya disebut sebagai layanan mikro .

Untuk meringkas, ketika sebuah perusahaan menawarkan API kepada pelanggan mereka, itu berarti bahwa mereka telah membangun satu set URL khusus yang mengembalikan respon data murni - yang berarti tanggapan tidak akan berisi jenis overhead presentasi yang Anda harapkan dalam sebuah antarmuka pengguna grafis seperti situs web .

Bisakah Anda membuat permintaan ini dengan browser Anda? Seringkali ya. Karena transmisi HTTP yang sebenarnya terjadi dalam teks, browser Anda akan selalu melakukan yang terbaik untuk menampilkan respons.

Misalnya, Anda dapat mengakses API GitHub secara langsung dengan browser Anda bahkan tanpa memerlukan token akses. Berikut tanggapan JSON yang Anda dapatkan saat mengunjungi rute API pengguna GitHub di browser Anda (//api.github.com/users/petrgazarov):

{ "login": "petrgazarov", "id": 5581195, "avatar_url": "//avatars.githubusercontent.com/u/5581195?v=3", "gravatar_id": "", "url": "//api.github.com/users/petrgazarov", "html_url": "//github.com/petrgazarov", "followers_url": "//api.github.com/users/petrgazarov/followers", "following_url": "//api.github.com/users/petrgazarov/following{/other_user}", "gists_url": "//api.github.com/users/petrgazarov/gists{/gist_id}", "starred_url": "//api.github.com/users/petrgazarov/starred{/owner}{/repo}", "subscriptions_url": "//api.github.com/users/petrgazarov/subscriptions", "organizations_url": "//api.github.com/users/petrgazarov/orgs", "repos_url": "//api.github.com/users/petrgazarov/repos", "events_url": "//api.github.com/users/petrgazarov/events{/privacy}", "received_events_url": "//api.github.com/users/petrgazarov/received_events", "type": "User", "site_admin": false, "name": "Petr Gazarov", "company": "PolicyGenius", "blog": "//petrgazarov.com/", "location": "NYC", "email": "[email protected]", "hireable": null, "bio": null, "public_repos": 23, "public_gists": 0, "followers": 7, "following": 14, "created_at": "2013-10-01T00:33:23Z", "updated_at": "2016-08-02T05:44:01Z"}

Browser tampaknya telah melakukannya dengan baik dalam menampilkan respons JSON. Tanggapan JSON seperti ini siap digunakan dalam kode Anda. Sangat mudah untuk mengekstrak data dari teks ini. Kemudian Anda dapat melakukan apa pun yang Anda inginkan dengan data tersebut.

A untuk "Aplikasi"

Untuk menutupnya, mari tambahkan beberapa contoh API lagi.

“Penerapan” bisa mengacu pada banyak hal. Berikut beberapa di antaranya dalam konteks API:

  1. Sepotong perangkat lunak dengan fungsi berbeda.
  2. Seluruh server, seluruh aplikasi, atau hanya sebagian kecil dari sebuah aplikasi.

Pada dasarnya setiap perangkat lunak yang dapat dipisahkan secara khusus dari lingkungannya, dapat menjadi "A" dalam API, dan mungkin juga akan memiliki semacam API.

Misalkan Anda menggunakan pustaka pihak ketiga dalam kode Anda. Setelah dimasukkan ke dalam kode Anda, perpustakaan menjadi bagian dari aplikasi Anda secara keseluruhan. Menjadi perangkat lunak yang berbeda, perpustakaan kemungkinan akan memiliki API yang memungkinkannya untuk berinteraksi dengan kode Anda yang lain.

Berikut contoh lain: Dalam Desain Berorientasi Objek , kode diatur ke dalam objek. Aplikasi Anda mungkin memiliki ratusan objek yang ditentukan yang dapat berinteraksi satu sama lain.

Setiap objek memiliki API - sekumpulan metode dan properti publik yang digunakannya untuk berinteraksi dengan objek lain dalam aplikasi Anda.

An object may also have inner logic that is private, meaning that it’shiddenfrom the outside scope (and not an API).

From what we have covered, I hope you take away the broader meaning of API as well as the more common uses of the term today.

Interesting Resources (stuff that I left out but is still very cool):

A great youtube video on DNS (Domain Name System)

HTTP protocol basics

An Awesome Khan Academy video on Object Oriented Design Principles