Seputar REST API

by kucingucul, (49 days ago)

1. REST API
[image]
REST memiliki enam pondasi yang membentuknya, yaitu:
[image]
1.1. Antarmuka Seragam
Dengan menerapkan prinsip generalitas pada antarmuka komponen, kita dapat menyederhanakan arsitektur sistem secara keseluruhan dan meningkatkan keterbacaan interaksi. Berbagai batasan arsitektural membantu dalam mewujudkan antarmuka yang seragam serta mengarahkan perilaku komponen.

Empat batasan berikut dapat mewujudkan antarmuka REST yang seragam:

- Identifikasi sumber daya – Antarmuka harus mengidentifikasi secara unik setiap sumber daya yang terlibat dalam interaksi antara klien dan server.
- Manipulasi sumber daya melalui representasi – Sumber daya harus memiliki representasi yang seragam dalam respons server. Pengguna API harus menggunakan representasi ini untuk memodifikasi status sumber daya di server.
- Pesan yang mendeskripsikan dirinya sendiri – Setiap representasi sumber daya harus membawa informasi yang cukup untuk mendeskripsikan cara memproses pesan. Pesan tersebut juga harus memberikan informasi mengenai tindakan tambahan yang dapat dilakukan klien pada sumber daya tersebut.
- Hypermedia sebagai mesin status aplikasi – Klien hanya perlu memiliki URI awal aplikasi. Aplikasi klien harus secara dinamis mengendalikan semua sumber daya dan interaksi lainnya dengan menggunakan hyperlink.
Dengan kata lain, REST mendefinisikan antarmuka yang konsisten dan seragam untuk interaksi antara klien dan server. Misalnya, API REST berbasis HTTP menggunakan metode HTTP standar (GET, POST, PUT, DELETE, dll.) dan URI (Uniform Resource Identifiers) untuk mengidentifikasi sumber daya.

1.2. Klien-Server
Pola desain klien-server menerapkan pemisahan tanggung jawab, yang membantu komponen klien dan server berkembang secara independen.
Dengan memisahkan urusan antarmuka pengguna (klien) dari urusan penyimpanan data (server), kita meningkatkan portabilitas antarmuka pengguna di berbagai platform dan meningkatkan skalabilitas dengan menyederhanakan komponen server.
Saat klien dan server berkembang, kita harus memastikan bahwa antarmuka/kontrak antara klien dan server tidak terputus.

1.3. Stateless
Konsep stateless mengharuskan setiap permintaan dari klien ke server harus mengandung semua informasi yang diperlukan untuk memahami dan menyelesaikan permintaan tersebut.
Server tidak boleh memanfaatkan informasi konteks yang disimpan sebelumnya di server.
Oleh karena itu, aplikasi klien harus sepenuhnya menjaga status sesi.

1.4. Dapat Dicache
Keterbatasan cacheable mensyaratkan bahwa respons harus secara implisit atau eksplisit menandai dirinya sendiri sebagai dapat dicache atau tidak dapat dicache.
Jika respons dapat dicache, aplikasi klien berhak menggunakan kembali data respons tersebut untuk permintaan yang setara pada periode yang ditentukan.

1.5. Sistem Berlapis
Gaya sistem berlapis memungkinkan arsitektur terbentuk dari lapisan-lapisan hierarkis dengan membatasi perilaku komponen. Dalam sistem berlapis, setiap komponen tidak dapat melihat melampaui lapisan langsung yang sedang berinteraksi dengannya.
Contoh sederhana dari sistem berlapis adalah pola MVC. Pola MVC memungkinkan pemisahan tanggung jawab yang jelas, sehingga memudahkan pengembangan, pemeliharaan, dan penskalaan aplikasi.

1.6. Kode Sesuai Permintaan (Opsional)
REST juga memungkinkan fungsionalitas klien diperluas dengan mengunduh dan menjalankan kode dalam bentuk applet atau skrip.
Kode yang diunduh menyederhanakan klien dengan mengurangi jumlah fitur yang harus diimplementasikan sebelumnya. Server dapat menyediakan sebagian fitur yang dikirimkan ke klien dalam bentuk kode, dan klien hanya perlu menjalankan kode tersebut.

keuntungan REST:

  • Kesederhanaan dan standarisasi: Dengan memanfaatkan metode HTTP standar, REST memudahkan pengadopsian bagi para pengembang yang sudah terbiasa dengan HTTP. Kesederhanaan ini mempercepat proses pembelajaran dan integrasi.
  • Skalabilitas: Sifat stateless REST memastikan bahwa server tidak perlu menyimpan data sesi di antara permintaan. Hal ini memudahkan penskalaan horizontal dengan menambahkan instance tanpa perlu berbagi status server.
  • Modularitas: Layanan RESTful dapat dikembangkan sebagai komponen modular. Fungsionalitas yang terlokalisasi ini memungkinkan pembaruan independen dan meningkatkan kemudahan pemeliharaan.
  • Tidak bergantung pada platform: Dukungan HTTP yang tidak bergantung pada platform memungkinkan penggunaan oleh berbagai klien. Interoperabilitas yang dihasilkan mendorong integrasi API di seluruh sistem.
  • Perangkat yang matang dan dukungan komunitas: Umur REST yang panjang telah menyebabkan penyebaran luas alat, pustaka, praktik terbaik, panduan pemecahan masalah, dan sumber daya komunitas.

Complete thread:

 RSS Feed of thread