REST API (Representational State Transfer Application Programming Interface) adalah sebuah standar arsitektur yang digunakan untuk membangun layanan web yang dapat diakses melalui protokol HTTP. API ini memungkinkan aplikasi yang berbeda baik web, mobile, maupun desktop untuk berkomunikasi satu sama lain dengan cara yang sederhana, dapat diprediksi, dan terstandarisasi.
Prinsip Dasar REST
REST dibangun di atas enam prinsip utama:
- Client Server: Memisahkan kepentingan antara klien (pengguna) dan server (penyedia data), sehingga masing masing dapat berkembang secara independen.
- Stateless: Setiap permintaan dari klien harus berisi semua informasi yang diperlukan untuk diproses; server tidak menyimpan state (status) sesi.
- Cacheable: Respon dapat di cache untuk meningkatkan performa, asalkan respon menandakan bahwa dapat dicache.
- Uniform Interface: Menggunakan satu set standar operasi (biasanya HTTP verbs) sehingga interaksi menjadi konsisten.
- Layered System: Sistem dapat dibangun dalam lapisan lapisan (misalnya gateway, load balancer) tanpa klien mengetahui detail implementasinya.
- Code on Demand (opsional): Server dapat mengirimkan kode (seperti JavaScript) yang dijalankan di sisi klien.
HTTP Verbs yang Umum Digunakan
REST API biasanya memetakan operasi CRUD (Create, Read, Update, Delete) ke metode HTTP:
GETMengambil data (Read).POSTMembuat data baru (Create).PUTMemperbarui seluruh data (Update).PATCHMemperbarui sebagian data (Partial Update).DELETEMenghapus data (Delete).
Struktur URL (Endpoint)
Endpoint dalam REST biasanya berbentuk noun (kata benda) yang merepresentasikan sumber daya, misalnya:
https://api.example.com/users Beberapa contoh penggunaan:
GET /usersDaftar semua pengguna.GET /users/123Detail pengguna dengan ID 123.POST /usersMenambahkan pengguna baru.PUT /users/123Mengganti data pengguna 123 secara keseluruhan.PATCH /users/123Mengubah sebagian data pengguna 123.DELETE /users/123Menghapus pengguna 123.
Format Data yang Sering Dipakai
Respons API biasanya dikirim dalam format yang mudah diparsing, seperti:
- JSON Format paling populer karena ringan dan kompatibel dengan JavaScript.
- XML Masih dipakai pada sistem lama atau ketika kebutuhan skema yang ketat.
- YAML Kadang dipilih untuk konfigurasi, bukan untuk respons rutin.
Keamanan pada REST API
Karena API bersifat terbuka, keamanan menjadi hal penting. Beberapa mekanisme umum meliputi:
- HTTPS Enkripsi seluruh lalu lintas agar data tidak dapat disadap.
- API Key Token unik yang diberikan kepada setiap klien.
- OAuth 2.0 Protokol otorisasi yang memberikan token akses terbatas.
- Rate Limiting Membatasi jumlah request per waktu untuk mencegah penyalahgunaan.
Kelebihan Menggunakan REST API
REST API menawarkan banyak manfaat, antara lain:
- Kesederhanaan Menggunakan standar HTTP yang sudah dikenal luas.
- Skalabilitas Stateless membuat penambahan server menjadi mudah.
- Interoperabilitas Bahasa pemrograman apa pun yang dapat mengirim HTTP request dapat memanfaatkan layanan.
- Cacheability Memungkinkan penggunaan cache sehingga mengurangi beban server.
Perbandingan dengan Pendekatan Lain
Berikut perbandingan singkat antara REST dengan dua pendekatan populer lainnya:
| Aspek | REST | SOAP | GraphQL |
|---|---|---|---|
| Protokol | HTTP | HTTP, SMTP, dll. | HTTP |
| Format Data | JSON / XML | XML | JSON |
| State | Stateless | Stateless (meski kompleks) | Stateless |
| Flexibilitas Query | Terbatas (endpoint tetap) | Terbatas ( operasi standar) | Sangat fleksibel (query khusus) |
| Kompleksitas | Rendah sedang | Tinggi | Sedang tinggi (tergantung schema) |
Contoh Implementasi Sederhana
Berikut contoh kode Node.js menggunakan Express untuk membuat REST API sederhana yang mengelola data pengguna.
const express = require('express'); const app = express(); app.use(express.json()); let users = [ {id:1, name:'Budi', email:'budi@example.com'}, {id:2, name:'Siti', email:'siti@example.com'} ]; // GET /users app.get('/users', (req, res) => { res.json(users); }); // GET /users/:id app.get('/users/:id', (req, res) => { const user = users.find(u => u.id === parseInt(req.params.id)); if (!user) return res.status(404).send('User not found'); res.json(user); }); // POST /users app.post('/users', (req, res) => { const newUser = { id: users.length + 1, name: req.body.name, email: req.body.email }; users.push(newUser); res.status(201).json(newUser); }); // PUT /users/:id app.put('/users/:id', (req, res) => { const user = users.find(u => u.id === parseInt(req.params.id)); if (!user) return res.status(404).send('User not found'); user.name = req.body.name; user.email = req.body.email; res.json(user); }); // DELETE /users/:id app.delete('/users/:id', (req, res) => { const index = users.findIndex(u => u.id === parseInt(req.params.id)); if (index === -1) return res.status(404).send('User not found'); users.splice(index, 1); res.status(204).send(); }); app.listen(3000, () => console.log('API berjalan pada port 3000')); Kesimpulan
REST API menjadi pilihan utama bagi banyak pengembang karena kemudahan penggunaan, kompatibilitas lintas platform, dan kemampuan skalabilitas yang tinggi. Dengan mengikuti prinsip prinsip dasar seperti stateless, uniform interface, dan penggunaan HTTP verbs yang tepat, Anda dapat membangun layanan yang robust, aman, dan mudah dipelihara. Selalu ingat untuk melindungi endpoint dengan HTTPS dan mekanisme otorisasi yang sesuai, serta memanfaatkan caching untuk meningkatkan performa.
Jika ingin mengeksplorasi lebih jauh, cobalah membandingkan REST dengan GraphQL atau gRPC pada kasus penggunaan yang memerlukan fleksibilitas query atau performa tingkat rendah.
Semoga penjelasan ini membantu Anda memahami konsep REST API secara menyeluruh.