Apa yang saya pahami tentang API
Disclaimer : Tulisan ini merupakan kesimpulan yang saya buat dari beberapa tulisan di internet dan beberapa video di youtube yang membahas API. Tulisan ini kemungkinan besar bisa kurang tepat atau bahkan salah total. Harapan saya jika ada yang berkunjung di tulisan ini dan mempunyai pendapat yang berbeda bisa langsung mengkoreksi bagian-bagian yang salah di kolom komentar sehingga saya bisa dapat mengkoreksinya dengan cepat.
Saat pertama saya mengenal API, saya kira saya sudah berhasil membuat API saat berhasil membuat link yang mengeluarkan JSON. Ternyata tak sesederhana itu.
API menurut istilah adalah singkatan dari Application Program Interface yang fungsinya untuk aplikasi bisa berkomunikasi. Setidaknya ada 3 jenis API : Local API, WEB API, dan Program API.
Local API adalah API dari lokal mesin untuk dapat berkomunikasi dengan software komputer.
Web API biasanya dikenal dengan REST-API atau RESTful-API dan biasanya diakses melalui protokol HTTP.
Program API biasanya dikenal dengan RPC.
Di tulisan ini saya hanya berfokus di WEB API, karena itu yang sedang saya tekuni di kerjaan.
Web API atau REST API seperti dituliskan di atas berjalan di protokol HTTP sehingga metod-metod pada HTTP seperti GET, POST, PUT, dan Delete bisa digunakan.
Sebelumnya saya juga menuliskan fungsi API itu untuk berkomunikasi antara aplikasi dengan sistem atau aplikasi lainnya. Ada analogi menarik dari sebuah video di youtube yang menganalogikan API sebagai pelayan yang melayani komunikasi antara pelanggan ( aplikasi ) dengan dapur ( sistem ) yang meyediakan makanan. Agar si pelanggan dapat memesan dibutuhkan pelayan ( API ) untuk memberi tahu pesanan yang harus dibuat oleh dapur. Untuk lebih detailnya tonton video ini.
Dalam video singkat tadi cukup dijelaskan peran API, lalu pertanyaan selanjutnya keuntungan menggunakan API itu apa ?.
1. Independen
API ini bebas tidak terikat dengan bahasa pemograman untuk menggunakannya. Contohnya : Facebook, Twitter, Instagram menyediakan API yang bisa diakses publik, dan para programmer tidak perlu pusing harus menyesuaikan bahasa pemograman dengan si penyedia API selama datanya bisa diambil mau pake PHP, Javascript, Java, Python atau apapun tidak masalah.
2. Data “Real Time”
Data yang dihasilkan API akan sama persis dengan data yang tersedia tanpa perlu menunggu waktu sinkron. Bayangkan kalau pake cara manual data di-export lalu di-import lagi. Kan agak gimana gitu.
3. Data & Struktur Database kita masih rahasia.
API umumnya memberikan data akhir saja, misal hanya memberikan informasi user yang komplit dari nama sampai alamat. Pengguna API tidak perlu tahu bahwa mungkin struktur yang kita buat itu sebenarnya ada tabel user yang join dengan tabel detail_user. Terus data pun bisa kita atur apa saja yang dimunculkan di API, kan gak perlu semuanya, data-data sensitif masih bisa disembunyikan.
4. Aman dengan hak akses.
API biasanya bersifat publik tapi gak umum-umum amat, misalkan API facebook dengan graph.facebook.com nya. Meskipun bisa diakses linknya hasilnya akan berbeda. Contoh saat mengakses halaman facebook page youtube dengan api langsung. Alamat API nya adalah http://graph.facebook.com/youtube
contoh 1 tanpa hak akses :
{ "error": { "message": "An access token is required to request this resource.", "type": "OAuthException", "code": 104, "fbtrace_id": "C9rpfBCq3uu" } }
Contoh 2 dengan hak akses :
{ "id":"7270241753", "about":"The latest and greatest music videos, trends and channels from YouTube.", "can_post":true, "category":"Product\/Service", "checkins":1, "company_overview":"YouTube provides a forum for people to connect, inform, and inspire others across the globe and acts as a distribution platform for original content creators and advertisers large and small. ", "cover":{ "cover_id":"10155828809206754", "offset_x":600, "offset_y":0, "source":"https:\/\/scontent.xx.fbcdn.net\/v\/t1.0-9\/s720x720\/18425122_10155828809206754_6003708286153402409_n.png?oh=1a9d681c23a0417179f9478dd94f4adf&oe=59BE1859", "id":"10155828809206754" }, "founded":"2005", "has_added_app":false, "is_community_page":false, "is_published":true, "likes":82346975, "link":"https:\/\/www.facebook.com\/youtube\/", "name":"YouTube", "name_with_location_descriptor":"YouTube", "parking":{ "lot":0, "street":0, "valet":0 }, "talking_about_count":167817, "username":"youtube", "website":"http:\/\/youtube.com", "were_here_count":0 }
Jadi walaupun linknya dibuka untuk umum akan tetap aman. Lalu bagaimana cara untuk mengetahui hak akses seperti itu ? Konsepnya mirip dengan login di aplikasi-aplikasi pada umumnya. Tapi biasanya saat request ke API ada beberapa parameter yang harus dikirim. Biasanya yang dikirimkan itu token atau secret key sebagai pengganti user & password.
5. Pembatasan Request
API nya sudah independen bisa digunakan semua bahasa pemograman, datanya sama dengan yang di database, udah diberi hak akses agar gak sembarangan orang bisa menggunakannya. Tapi ada satu lagi yang perlu diperhatikan : jumlah request. Bayangkan jika ada 10000 requestdalam waktu kurang dari 1 jam misalnya, bisa jebol server kalau gak dipersiapkan matang-matang. Dengan pembangungan API yang lumayan akan diperhatikan juga jumlah rquest yang diperbolehkan dalam satu akun.
Sebagai contoh, di laravel jika menggunakan paket api-guard ada metod sebagai berikut :
'limits' => [ 'method' => [ 'increment' => '1 day', 'limit' => 1000 ] ]
Maksudnya dalam satu hari user tersebut hanya boleh melakukan 1000 request saja. Dengan begitu server kita akan aman dari request yang membabi buta.
kesimpulan :
Bagi saya membangun API ini bisa memudahkan ke banyak hal. Saat membangun API kita bisa dengan mudah bekerja sama dengan programmer lain mau dibikin aplikasi mobile ? aplikasi web lainnya ? Gak masalah, selama bisa berkomunikasi semuanya bisa aja.
Data pun akan lebih aman daripada harus memberi akses langsung ke sumbernya ( database ), juga data yang hendak dibagikan pun akan mudah diatur oleh si penyedia API, data-data sensitif tetap dirahasiakan sedangkan data yang umum bisa dibagikan.
Sumber Referensi :
- https://www.youtube.com/watch?v=s7wmiS2mSXY
- https://www.youtube.com/watch?v=Q-BpqyOT3a8
- http://searchmicroservices.techtarget.com/definition/application-program-interface-API
- http://www.webopedia.com/TERM/A/API.html
- https://en.wikipedia.org/wiki/Application_programming_interface