Memahami Pengertian REST API

Memahami Pengertian REST API

rest api

Pelajari panduan lengkap REST API mulai dari prinsip arsitektur, metode HTTP, status code, hingga cara mengintegrasikannya dengan JavaScript.

Dalam ekosistem pengembangan web modern, aplikasi jarang berdiri sendiri. Sebuah aplikasi web di sisi peramban (frontend) sering kali perlu berkomunikasi dengan server (backend), layanan pembayaran, platform peta, atau basis data. Standar paling populer yang digunakan untuk memfasilitasi pertukaran data antar-sistem ini adalah REST API.

Artikel ini menyajikan panduan komprehensif mengenai REST API—mulai dari konsep dasar, prinsip arsitektur, penggunaan metode HTTP, arti status code, hingga contoh praktis cara mengintegrasikannya menggunakan JavaScript.

Poin-Poin Utama (Key Takeaways)

  • Standar Komunikasi Data: REST API adalah gaya arsitektur antarmuka pemrograman yang memanfaatkan protokol HTTP untuk pertukaran data (biasanya berformat JSON).
  • Statelessness: Setiap permintaan (request) dari client ke server harus berdiri sendiri dan membawa seluruh informasi yang dibutuhkan tanpa bergantung pada sesi server.
  • Metode HTTP (CRUD): Menggunakan kata kerja HTTP standar seperti GET (membaca), POST (membuat), PUT/PATCH (memperbarui), dan DELETE (menghapus).
  • Status Code Respons: Kode tiga digit yang memberi tahu client apakah permintaan berhasil (200 OK), ada kesalahan akses (401/403), data tidak ditemukan (404), atau terjadi gangguan server (500).

Apa Itu REST API?

API (Application Programming Interface) adalah kumpulan aturan yang memungkinkan suatu perangkat lunak berkomunikasi dengan perangkat lunak lainnya. Sementara REST (Representational State Transfer) adalah gaya arsitektur perangkat lunak yang diperkenalkan oleh Roy Fielding pada tahun 2000 untuk merancang aplikasi web terdistribusi.

Jadi, REST API (atau RESTful API) adalah web service yang menerapkan aturan-aturan arsitektur REST dalam memproses permintaan data melalui protokol HTTP.

6 Prinsip Utama Arsitektur REST:

  1. Client-Server: Memisahkan antarmuka pengguna (client) dari logika penyimpanan data (server).
  2. Stateless: Server tidak menyimpan riwayat sesi client. Setiap request wajib membawa data identifikasi lengkap (misal: Token/API Key).
  3. Cacheable: Respons dari server harus menandai apakah data boleh disimpan sementara (cached) oleh client untuk menghemat bandwidth.
  4. Uniform Interface: Menggunakan standar alamat URL (endpoint) dan format data (JSON/XML) yang konsisten di seluruh sistem.
  5. Layered System:Client tidak perlu tahu apakah ia terhubung langsung ke server utama atau melalui perantara (proxy/load balancer).
  6. Code on Demand (Opsional): Server dapat mengirimkan kode yang dapat dieksekusi (seperti skrip JavaScript) ke client.

Metode HTTP Utama (HTTP Verbs)

REST API mengoordinasikan tindakan terhadap sumber daya (resource) menggunakan metode HTTP standar. Operasi ini sering disepadankan dengan konsep CRUD (Create, Read, Update, Delete):

Metode HTTPOperasi CRUDFungsi & KarakteristikIsempotent?*
GETReadMengambil atau membaca data dari server. Tidak boleh mengubah data.Ya
POSTCreateMengirimkan data baru ke server untuk disimpan (misal: pendaftaran akun).Tidak
PUTUpdate (Full)Memperbarui seluruh data dari suatu resource (mengganti total data lama).Ya
PATCHUpdate (Partial)Memperbarui sebagian bidang (field) dari suatu resource tanpa mengganti keseluruhan.Tidak
DELETEDeleteMenghapus resource yang ditentukan dari server.Ya

*Catatan Idempotent: Operasi dianggap idempotent jika memanggil permintaan tersebut berkali-kali dengan data yang sama akan memberikan hasil akhir yang sama pada server.

Memahami HTTP Status Code

Saat server menerima request, ia akan memberikan respons berupa data beserta HTTP Status Code tiga digit yang menandakan status eksekusi permintaan:

1. Kode 2xx (Success – Berhasil)

  • 200 OK: Permintaan berhasil dan data dikembalikan sesuai harapan.
  • 201 Created: Permintaan berhasil dan resource baru telah sukses dibuat (biasanya respons untuk POST).
  • 204 No Content: Permintaan berhasil diproses, namun tidak ada data yang perlu dikembalikan dalam body (biasanya respons untuk DELETE).

2. Kode 3xx (Redirection – Pengalihan)

  • 301 Moved Permanently: URL endpoint telah dipindahkan secara permanen ke alamat baru.
  • 304 Not Modified: Data belum berubah sejak permintaan terakhir (menggunakan cache lokal).

3. Kode 4xx (Client Error – Kesalahan Pengguna)

  • 400 Bad Request: Format request salah atau sintaksis payload JSON tidak valid.
  • 401 Unauthorized: Akses ditolak karena client belum melakukan otentikasi (membutuhkan login atau API Key).
  • 403 Forbidden:Client sudah terotentikasi, namun tidak memiliki hak akses/izin untuk resource tersebut.
  • 404 Not Found: Alamat URL endpoint atau data yang dicari tidak ditemukan di server.
  • 422 Unprocessable Entity: Format JSON benar, namun terdapat kesalahan validasi data (misal: alamat email salah format).

4. Kode 5xx (Server Error – Kesalahan Server)

  • 500 Internal Server Error: Terjadi kesalahan umum atau bug yang tidak terduga pada kode program server.
  • 502 Bad Gateway: Server perantara menerima respons yang tidak valid dari server hulu (upstream).
  • 503 Service Unavailable: Server sedang tidak dapat melayani permintaan (sedang pemeliharaan atau kelebihan beban).

Cara Mengintegrasikannya dengan JavaScript (Fetch API)

Berikut adalah contoh praktis bagaimana mengonsumsi REST API dari aplikasi web menggunakan JavaScript murni (Fetch API dengan async/await).

1. Mengambil Data (GET Request)

JavaScript

async function ambilDaftarPengguna() {
    try {
        const response = await fetch('https://jsonplaceholder.typicode.com/users');
        
        // Memeriksa apakah status code berada di rentang 200-299
        if (!response.ok) {
            throw new Error(`Gagal mengambil data. Status: ${response.status}`);
        }

        const dataUser = await response.json();
        console.log("Daftar User:", dataUser);
    } catch (error) {
        console.error("Terjadi Kesalahan:", error.message);
    }
}

ambilDaftarPengguna();

2. Mengirimkan Data Baru (POST Request)

JavaScript

async function tambahPenggunaBaru(dataBaru) {
    try {
        const response = await fetch('https://jsonplaceholder.typicode.com/users', {
            method: 'POST',
            headers: {
                'Content-Type': 'application/json',
                'Authorization': 'Bearer TOKEN_API_ANDA' // Jika membutuhkan otentikasi
            },
            body: JSON.stringify(dataBaru)
        });

        if (response.status === 201) {
            const hasil = await response.json();
            console.log("User Berhasil Ditambahkan:", hasil);
        } else {
            console.error("Gagal menambahkan user. Status:", response.status);
        }
    } catch (error) {
        console.error("Terjadi kesalahan jaringan:", error);
    }
}

// Menjalankan fungsi
tambahPenggunaBaru({
    name: "Ahmad Dahlan",
    email: "[email protected]"
});

Kesimpulan

REST API adalah standar industri yang menghubungkan berbagai aplikasi dan platform di seluruh dunia. Dengan memahami metode HTTP (GET, POST, PUT, DELETE), struktur status code, serta prinsip arsitekturnya, Anda dapat membangun dan mengintegrasikan layanan web (web services) yang efisien, terstruktur, serta aman.

FAQ (Frequently Asked Questions)

1. Apa perbedaan antara REST API dan SOAP API?

REST API menggunakan arsitektur yang lebih ringan, umumnya menggunakan format data JSON, dan mendukung caching. Sementara SOAP (Simple Object Access Protocol) adalah protokol yang lebih kaku, menggunakan format XML, dan biasanya digunakan dalam sistem enterprise yang membutuhkan standar keamanan sangat ketat (seperti perbankan).

2. Mengapa format JSON lebih sering digunakan dalam REST API dibanding XML?

JSON (JavaScript Object Notation) memiliki ukuran berkas yang jauh lebih kecil, struktur yang lebih mudah dibaca oleh manusia, serta dapat di-parse secara native oleh JavaScript tanpa perlu pustaka pemroses tambahan.

3. Apa itu CORS (Cross-Origin Resource Sharing) dalam REST API?

CORS adalah mekanisme keamanan di peramban web yang membatasi permintaan HTTP dari domain yang berbeda dengan domain server API. Server API harus menambahkan header Access-Control-Allow-Origin agar peramban mengizinkan akses data.

2 thoughts on “Memahami Pengertian REST API”

  1. Pingback: Memahami Backend dalam Pengembangan Web - Blog Reza

  2. Pingback: Memahami LLM (Large Language Model) - Blog Reza

Leave a Comment

Your email address will not be published. Required fields are marked *