Apa itu API (Application Programming Interface)

Posted on

Struktur API

Apa itu API? API (Application Programming Interface) adalah sebuah metode yang dapat digunakan untuk mengintegrasikan/menghubungkan aplikasi atau website kita dengan sistem lain.

Contoh pertama apa itu api:

Misalnya, jika kita ingin menambahkan fitur untuk menampilkan kurs mata uang pada aplikasi kita, kita dapat menggunakan API dari sebuah website yang menyediakan data kurs mata uang. Dengan menggunakan API tersebut, aplikasi kita dapat dengan mudah mengambil dan menampilkan data kurs mata uang tanpa harus mengumpulkan data tersebut sendiri.

Contoh kedua apa itu api:

Misalnya, jika kita ingin menambahkan fitur login menggunakan akun Facebook pada aplikasi kita, kita dapat menggunakan API dari Facebook untuk mengintegrasikan fitur tersebut tanpa harus membuatnya dari awal. Jadi, API memberikan jalan bagi aplikasi kita untuk berinteraksi dengan sistem lain dan mengakses fitur yang tersedia di sana.

Kemudian, API itu memiliki struktur agar dapat mengirim dan menerima data. Jika anda melihat salah satu aplikasi yang digunakan untuk pengembangan API, Insomnia atau postman misalnya maka anda akan melihat seperti ini:

Apa itu API (Application Programming Interface)

Struktur API terdiri dari beberapa parameter yang digunakan untuk mengirimkan dan menerima data dan informasi dari aplikasi. Beberapa parameter yang umum digunakan dalam struktur API meliputi

  • Endpoint
  • Method
  • Header
    • Request Headers
    • Response Headers
  • Body
    • Request Payload (Body)
    • Response Payload (Body)
  • Query
    • Request Headers
    • Response Headers
  • Authentication/Authorization
  • Response Code

Untuk penjelasan dari struk API diatas adalah sebagai berikut:

Endpoint

Merupakan bagian dari URI (Uniform Resource Identifier) yang digunakan untuk mengidentifikasi sumber daya yang akan diakses.

Endpoint dapat diartikan sebagai alamat url yang digunakan untuk mengakses sumber daya yang ditentukan. Endpoint biasanya terdiri dari domain atau alamat IP dari server dan path dari sumber daya yang diinginkan.

Contoh endpoint: “https://api.example.com/users

Method

Merupakan metode HTTP (GET, POST, PUT, DELETE, dll) yang digunakan untuk menentukan aksi yang akan dilakukan pada sumber daya yang diakses. Method yang paling umum untuk penggunaan pada API adalah:

  • Method GET digunakan untuk mengambil data dari server
  • Method POST digunakan untuk menambahkan data baru ke server
  • Method PUT digunakan untuk memperbarui data yang ada di server
  • Method DELETE digunakan untuk menghapus data dari server

Header

HTTP headers adalah bagian dari permintaan dan respon dalam protokol HTTP yang digunakan untuk mengirimkan informasi tambahan yang dibutuhkan oleh aplikasi atau client. Header dapat digunakan untuk mengirimkan informasi seperti tipe konten, otorisasi, lokasi, atau informasi lain yang dibutuhkan oleh aplikasi untuk memproses permintaan.

HTTP headers dapat dibagi menjadi dua jenis, yaitu Request headers dan Response headers. Penjelasannya adalah sebagai berikut:

1. Request headers

Request headers digunakan untuk mengirimkan informasi tambahan ke server sebagai bagian dari permintaan. Contoh request headers :

  • Content-Type : digunakan untuk menentukan tipe konten dari permintaan, seperti “application/json” atau “application/x-www-form-urlencoded”
  • Authorization : digunakan untuk mengirimkan token otorisasi atau kredensial pengguna, seperti “Bearer <token_string>” atau “Basic <credentials_string>”
  • User-Agent : digunakan untuk mengidentifikasi jenis perangkat yang digunakan oleh client, seperti “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36”
  • Accept-Language : digunakan untuk menentukan bahasa yang diinginkan oleh client, seperti “en-US,en;q=0.9,id;q=0.8”
  • Connection : digunakan untuk menentukan apakah koneksi harus tetap terbuka setelah respon diterima, seperti “keep-alive” atau “close” – Accept : digunakan untuk menentukan jenis konten yang diterima oleh client, seperti “application/json” atau “application/xml” – Host : digunakan untuk menentukan alamat server yang dituju, seperti “api.example.com” – Date : digunakan untuk menentukan tanggal dan waktu permintaan dikirim, seperti “Thu, 21 Dec 2022 12:00:00 GMT” – dll

2. Response headers

Response headers digunakan untuk mengirimkan informasi tambahan dari server sebagai bagian dari respon. Contoh response headers :

  • Content-Type : digunakan untuk menentukan tipe konten dari respon, seperti “application/json” atau “text/html”
  • Location : digunakan untuk menentukan alamat URL baru setelah permintaan redirect, seperti “https://api.example.com/new-resource”
  • Set-Cookie : digunakan untuk mengirimkan cookie ke client, seperti “session_id=12345; expires=Thu, 21 Dec 2022 12:00:00 GMT; path=/”
  • Cache-Control : digunakan untuk menentukan peraturan cache yang digunakan oleh client, seperti “no-cache” atau “max-age=3600”
  • Expires : digunakan untuk menentukan waktu kadaluwarsa dari respon, seperti “Thu, 21 Dec 2022 12:00:00 GMT”
  • Server : digunakan untuk mengidentifikasi jenis server yang digunakan, seperti “Apache/2.4.38 (Ubuntu)” – dll

Body

Body adalah bagian dari permintaan dan respon yang digunakan untuk mengirimkan atau menerima data. Body digunakan dalam permintaan untuk mengirimkan data yang akan diterima oleh server (Request Body), dan digunakan dalam respon untuk mengirimkan data yang dihasilkan oleh server (Response Body).

1. Request Body

Request Body digunakan untuk mengirimkan data ke server sebagai bagian dari permintaan. Request body biasanya dikirimkan dalam format JSON atau XML. Dalam request body, terdapat beberapa parameter yang diterima seperti :

  • Nama parameter
  • Tipe data dari parameter
  • Deskripsi dari parameter
  • Nilai default dari parameter
  • Apakah wajib atau tidak wajib dari parameter
  • Contoh dari parameter

2. Response Body

Response Body digunakan untuk mengirimkan data yang dihasilkan oleh server sebagai bagian dari respon. Response body biasanya dikirimkan dalam format JSON atau XML. Dalam response body, terdapat beberapa parameter yang diterima seperti :

  • Nama parameter
  • Tipe data dari parameter
  • Deskripsi dari parameter
  • Nilai dari parameter
  • Contoh dari parameter

Body dapat digunakan untuk mengirimkan atau menerima data dalam jumlah yang besar dan dalam format yang berbeda seperti JSON, XML, atau plain text.

Query Parameters

Merupakan bagian dari permintaan yang digunakan untuk mengirimkan parameter tambahan yang dibutuhkan oleh aplikasi. Query parameters biasanya ditambahkan setelah “?” pada URI endpoint dan digunakan untuk menyaring atau menentukan jenis data yang akan diterima oleh aplikasi. Contoh query parameter : “https://api.example.com/users?page=2&sort=desc

Authentication/Authorization

Merupakan proses yang digunakan untuk mengidentifikasi dan memvalidasi pengguna yang mengirimkan permintaan. Biasanya digunakan untuk mengirimkan token atau kredensial yang digunakan untuk mengidentifikasi pengguna yang sah. Dalam contoh yang saya berikan sebelumnya, request headers digunakan untuk mengirimkan token dalam Authorization headers.

Response Code

Merupakan kode HTTP (200, 201, 401, 404, dll) yang digunakan untuk menandakan hasil dari permintaan yang dikirimkan. Response code digunakan untuk memberikan informasi kepada client mengenai apakah permintaan berhasil atau tidak dan mengapa. Contoh response code : 200 OK (permintaan berhasil), 401 Unauthorized (tidak ada otorisasi), 404 Not Found (sumber daya tidak ditemukan).

Semua parameter tersebut saling berkaitan dan membentuk struktur dari sebuah API. Beberapa parameter dapat diabaikan tergantung dari kebutuhan aplikasi. Namun, dalam implementasi sebuah API, harus diperhatikan setiap parameter tersebut agar dapat digunakan dengan baik dan sesuai dengan standar yang ditentukan.

Berikut adalah contoh struktur API dalam bentuk baris program :

// Request Payload (Body)
{
  "name": "John Doe",
  "email": "johndoe@example.com",
  "password": "password123"
}

// Request Headers
Content-Type: application/json
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOjEsImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC9hcGkvYXV0aC9sb2dpbiIsImlhdCI6MTU5MzU1NjMwNywiZXhwIjoxNTkzNTYyNzA3LCJuYmYiOjE1OTM1NTYzMDcsImp0aSI6IjgxZTcxZTllZmM3NjRmNzNiNzM5NzIyMzE1Njg5MzNlIn0.ZNzLjKJ2fvNgWn1Y3qG3L-rzrJ9nT9jKdZ_mK_4j4f0

// Query Parameters
GET http://localhost:8080/api/users?page=2&sort=desc

// Authentication (Auth)
POST http://localhost:8080/api/auth/login
{
  "email": "johndoe@example.com",
  "password": "password123"
}

Dalam contoh di atas, struktur API terdiri dari Request Payload yang dikirimkan dalam format JSON, Request Headers yang digunakan untuk mengirimkan informasi tambahan seperti Content-Type dan Authorization, Query Parameters yang digunakan untuk menyaring data yang diterima oleh aplikasi dan Authentication yang digunakan untuk mengidentifikasi dan memvalidasi pengguna.

Jadi, struktur API adalah kumpulan dari beberapa komponen yang digunakan untuk mengirimkan dan menerima data dan informasi dalam permintaan API. Untuk mengetahui apa itu api, mari kita lihat beberapa jenis api.

Jenis API

Berdasarkan Privasi

API dapat dibagi menjadi dua jenis, yaitu API yang ditujukan untuk digunakan oleh developer lain dan API yang digunakan hanya oleh pengembang aplikasi yang sama. API yang ditujukan untuk digunakan oleh developer lain disebut sebagai API publik, sedangkan API yang digunakan hanya oleh pengembang aplikasi yang sama disebut sebagai API privat.

API publik digunakan untuk memungkinkan developer lain untuk mengintegrasikan aplikasi mereka dengan sistem yang dikembangkan oleh pengembang aplikasi lain. Contohnya, Facebook menyediakan API publik yang memungkinkan developer untuk mengambil data dari Facebook dan menampilkannya di aplikasi mereka sendiri.

API privat digunakan untuk mengintegrasikan sistem internal dari sebuah perusahaan atau organisasi. Contohnya, sebuah perusahaan e-commerce yang menyediakan API privat bagi tim pengembang mereka untuk mengintegrasikan sistem pembayaran dengan sistem inventory.

Berdasarkan Cara Kerja

API juga dapat dibedakan berdasarkan cara kerjanya, yaitu synchronous dan asynchronous. Synchronous API adalah jenis API yang menunggu jawaban dari sistem yang dikontak sebelum melanjutkan proses. Sedangkan asynchronous API adalah jenis API yang tidak menunggu jawaban dari sistem yang dikontak sebelum melanjutkan proses.

Berdasarkan Format API

API dapat dalam berbagai format, namun yang paling umum digunakan adalah REST dan SOAP.

REST API adalah jenis API yang mengikuti arsitektur REST, yang menggunakan protokol HTTP (Hypertext Transfer Protocol) untuk mengirim dan menerima data. REST API menggunakan metode HTTP seperti GET, POST, PUT, dan DELETE untuk mengakses dan memanipulasi data. REST API juga menggunakan format data seperti JSON atau XML untuk mengirim dan menerima data.

SOAP API adalah jenis API yang menggunakan protokol SOAP untuk mengirim dan menerima data. SOAP API menggunakan format data XML dan mengikuti standar web service seperti WSDL (Web Services Description Language) dan SOAP.

Teknik Caching

Saat mengembangkan sebuah aplikasi dengan menggunakan API, kita juga harus memperhatikan performa dan skalabilitas dari aplikasi tersebut. Performa merupakan kecepatan aplikasi dalam merespon permintaan dan mengirimkan jawaban, sementara skalabilitas merupakan kemampuan aplikasi untuk menangani jumlah permintaan yang bertambah.

Untuk meningkatkan performa, kita dapat menggunakan teknik caching. Caching adalah proses penyimpanan data sementara di dalam memori aplikasi, sehingga data tersebut dapat diakses lebih cepat tanpa harus mengambil data dari sumber aslinya. Caching juga dapat mengurangi beban pada sistem yang digunakan oleh API.

Skalabilitas dapat ditingkatkan dengan menggunakan teknik horizontal scaling dan vertical scaling. Horizontal scaling adalah proses menambah jumlah server atau node dalam sebuah sistem, sehingga dapat menangani jumlah permintaan yang lebih banyak. Sedangkan vertical scaling adalah proses menambah resource seperti memory atau CPU pada sebuah server, sehingga dapat menangani jumlah permintaan yang lebih banyak.

Selain itu, saat mengembangkan API, kita juga harus memperhatikan dokumentasi API. Dokumentasi API merupakan panduan bagi developer lain yang akan menggunakan API yang dikembangkan. Dokumentasi API harus menjelaskan cara kerja API, parameter yang diterima, dan format data yang dikembalikan. Dokumentasi API juga harus menyertakan contoh kode yang dapat digunakan untuk mengintegrasikan API ke dalam aplikasi.

Serverless & Microservices

API juga dapat dikombinasikan dengan teknologi lain seperti serverless dan microservices. Serverless adalah arsitektur aplikasi yang tidak menggunakan server fisik, sehingga dapat mengurangi biaya dan meningkatkan skalabilitas. Microservices adalah arsitektur aplikasi yang memisahkan aplikasi menjadi beberapa bagian kecil yang dapat di-deploy dan di-update secara terpisah. Kombinasi API dengan teknologi ini dapat membuat aplikasi yang lebih fleksibel dan mudah dikembangkan.

Kesimpulan

Secara keseluruhan tentang apa itu api, API merupakan komponen yang sangat penting dalam dunia web development. API memungkinkan aplikasi untuk berinteraksi dengan sistem lain dan mengakses fitur yang ditawarkan oleh sistem tersebut. Namun, saat mengembangkan API, kita harus memperhatikan aspek performa, skalabilitas, keamanan, privasi, dan dokumentasi. Selain itu, kita juga harus memahami cara kerja dasar dari API dan bagaimana cara menggunakannya dalam pengembangan aplikasi.

API juga dapat dikombinasikan dengan teknologi lain seperti serverless dan microservices untuk membuat aplikasi yang lebih fleksibel dan mudah dikembangkan. Namun, selalu penting untuk memastikan bahwa aplikasi yang dikembangkan dengan menggunakan API dapat diandalkan dan aman untuk digunakan.

Baca juga: Cara Ambil Data API atau Fetch API Javascript

Dalam era digital saat ini, API menjadi sangat penting bagi perkembangan bisnis dan teknologi. API memungkinkan perusahaan untuk mengintegrasikan sistem mereka dengan sistem lain, sehingga dapat meningkatkan efisiensi dan efektivitas operasional. Selain itu, API juga memungkinkan perusahaan untuk menawarkan layanan dan fitur baru kepada pelanggan mereka.

Namun, penting untuk diingat bahwa pengembangan API tidak selalu mudah dan memerlukan kerja keras dan pemahaman yang baik dari teknologi yang digunakan. Namun, dengan pemahaman yang baik apa itu API dan teknologi yang digunakan, web developer dapat mengembangkan aplikasi yang inovatif dan berguna bagi pengguna.