Apa itu REST?
REST adalah singkatan dari Representational State Transfer yang merupakan suatu pola atau gaya arsitektur standart untuk layanan web yang memudahkan sistem berkomunikasi satu sama lain dan berbagi data.
REST adalah pola desain untuk API, dan API yang mengikuti pola, aturan, dan batasan dari REST ini disebut REST API atau RESTful API.
Kita lihat terlebih dahulu apa itu API sebelum lebih jauh ke REST API atau RESTful API.
Apa itu API?
Kepanjangan dari API adalah Application Programming Interface, yang merupakan penghubung perangkat lunak ke perangkat lunak. API memungkinkan perangkat lunak berinteraksi satu sama lain, sesuai fungsi dan prosedur yang ada.
Seperti API dalam apilikasi web. Server menerima permintaan yang masuk atau request melalui URL atau endpoint, kemudian API memberikan tanggapan / response sebagai balasan atas permintaan yang diterima.
Seperti kita mendengarkan musik di situs musik online dan kita melakukan pencarian lagu dengan mengetikan judul lagu pada kolom pencarian; kemudian situs musik tersebut menampilkan lagu yang kita cari.
Setiap ada permintaan yang masuk, API akan memberi tanggapan sebagai balasan.
Syarat dan Ketentuan REST
Kita kembali ke REST. Diatas ada disinggung mengenai bagaimanan API dapat menjadi RESTful, yaitu sesuai syarat dan ketentuan dari arsitektur REST.
Syarat dan ketentuannya seperti apa, mari kita lihat dibawah ini:
1. Client-Server
Ketentuannya adalah memisahkan antara client dan server; bagian client sendiri dan server sendiri. Client hanya peduli pada user interface atau frontend dan server yang hanya menangani penyimpanan data atau bagaian backend.
Ini akan membuat masing-masing dapat dikembangkan atau dimodifikasi secara mendiri atau terpisah dan tidak saling ketergantungan.
2. Stateless
Setiap permintaan client harus berisi semua informasi yang diperlukan server untuk memenuhi permintaan tersebut, dan server tidak akan menyimpan data apapun untuk setiap permintaan / request.
3. Cacheable
Dapat menyimpan sumber daya dalam cache. Permintaan atau request klien ke sumber daya yang sama secara berulang-ulang akan menghasilkan respons yang dikirim secara berulang.
Hal ini akan lebih baik dan efektif jika sumber daya dapat di simpan ke dalam cache dan digunakan kembali untuk permintaan berikutnya, dan server tidak perlu memroses permintaan yang sama secara berulang, sehingga dapat meringankan.
4. Layered System
Dalam mengurangi beban, menambah fungsionalitas, stabilitas atau keamanan yang berlapis dapat menggunakan sistem atau server perantara diluar server utama; dan klien tidak perlu mengetahuinya.
5. Code On Demand (opsional)
Memberikan script atau kode ke klien sesuai permintan untuk menambah fungsionalitas client atau aplikasi.
6. Uniform Interface
Antarmua / Interface antara Client dan Server harus sama dan menggunakan standart URI untuk mengidentifikasi sumber daya atau resource.
Request Methods
Selanjutnya kita akan melihat Methods pada REST API atau metode permintaan.
HTTP (HyperText Transfer Protocol) adalah suatu metode komunikasi antara client dan server yang memungkinkan kita melakukan tindakan yang ingin dilakukan ke sumber daya, seperti mengambil data, menambahkan data, mengedit, dan menghapus data; atau yang kita kenal dengan CRUD.
Dalam membuat permintaan atau melakukan tindakan CRUD ke sumber daya terdapat beberapa metode HTTP yang digunakan; atau yang disebut HTTP Verbs. Yang paling umum diataranya yaitu GET, POST, PUT, dan DELETE.
GET: Digunakan untuk mengambil atau membaca representasi sumber daya. Metode GET hanya mengambil data, tidak dapat mengubah data yang diminta pada server.
POST: Digunakan untuk membuat data atau sumber daya baru ke server atau database.
PUT: Digunakan untuk memperbaharui data. Metode PUT hanya mengembalikan data yang sedang digunakan dengan data baru.
DELETE: Digunakan untuk menghapus data yang dipilih dari daftar sumber daya.
HTTP Status Codes
Terdapat informasi berupa kode angka sebagai tanggapan atas permintaan yang dikirim. Kode status ini akan memberi tahu mengenai hasil dari permintaan tersebut, apakah berhasil atau terdapat kesalahan.
Kode-kode tersebut dikelompokan dalam 5 kategori:
1. Kode 1xx: Informational
- 100 : Continue
- 101: Switching Protocol
- 102: Processing
- 103: Early Hints
2. Kode 2xx: Success
- 200: Ok
- 201: Created
- 202: Accepted
- 203: Non-Authoritative Information
- 204: No Content
- 205: Reset Content
- 206: Partial Content
- 207: Multi-Status
- 208: Already Reported
- 226: IM Used
3. Kode 3xx: Redirection
- 300 Multiple Choice
- 301 Moved Permanently
- 302 Found
- 303 See Other
- 304 Not Modified
- 305: Use Proxy
- 306 unused
- 307 Temporary Redirect
- 308 Permanent Redirect
4. Kode 4xx: Client Error
- 400 Bad Request
- 401 Unauthorized
- 402 Payment Required
- 403 Forbidden
- 404 Not Found
- 405 Method Not Allowed
- 406 Not Acceptable
- 407 Proxy Authentication Required
- 408 Request Timeout
- 409 Conflict
- 410 Gone
- 411 Length Required
- 412 Precondition Failed
- 413 Payload Too Large
5. Kode 5xx: Server Error
- 500 Internal Server Error
- 501 Not Implemented
- 502 Bad Gateway
- 503 Service Unavailable
- 504 Gateway Timeout
- 505 HTTP Version Not Supported
Itu dia sedikit tentang REST API. Kita telah melihat apa itu rest api, bagaimana api dapat menjadi restful, metode-metode yang ada, kode status, serta syarat dan ketentuan dari REST.