REST API rest dan http

Tutorial REST API #2: REST dan HTTP

Tutorial Sebelumnya:

Tutorial REST API #1: Apa itu API?

Kita akan membahas pengertian dan konsep dari REST & HTTP karena REST dan HTTP ini erat kaitannya ketika membuat sebuah REST Server itu pasti kita akan menggunakan protokol HTTP.

Apa itu REST API?

REST API adalah gaya arsitektural perangkat lunak yang di dalamnya mendefinisikan aturan-aturan untuk membuat web service.
Sumber: https://en.wikipedia.org/wiki/Representational_state_transfer

Jadi sebetulnya Rest API merupakan sebuah style atau gaya ngoding saja, Rest API bukan aturan baku ataupun standar. Misalkan kita tidak mengikuti semua aturan yang ada di dalamnya makan Rest API nya masih tetap bisa dibuat dan dijalankan.

Ilustrasi dari sebuah REST API dapat dilihat pada gambar berikut ini:

Ilustrasi Rest API
Ilustrasi Rest API

Misalkan kita memiliki aplikasi yang diakses melalui browser, lalu kita kirim request nya lewat internet, maka kita akan terhubung ke sebuah Web API aplikasi lain dan mengembalikan data permintaan yang disebut dengan response. Jadi aplikasi yang kita buat akan berbeda dengan aplikasi yang dibuat orang lain.

Contohnya salah satu aplikasi yang sering kita pakai seperti Traveloka. Traveloka adalah sebuah aplikasi dimana di dalamnya kita melihat ataupun mencari bahkan bisa memesan tiket pesawat, tiket kereta api, memesan kamar hotel dan lain lain. Kita tau bahwa Traveloka tidak memilik perusahaan penerbangan, kereta api maupun hotel, semua nya milik orang lain.

Kenapa kita bisa melakukan semua itu di Traveloka? Apakah Traveloka langsung menghubungkan aplikasinya dengan database perusahaan lain?

Jawabannya tentu saja TIDAK, Traveloka bisa mendapatnya data perusahaan penerbangan, kereta api, dan hotel itu melalui sebuah Web Service / Web API. Sehingga traveloka mengumpulkan data-data lewat API tersebut. Ilustrasinya sederhananya dapat dilihat pada gambar di bawah ini:

Ilustrasi Penggunaan API pada Traveloka
Ilustrasi Penggunaan API pada Traveloka

Contoh kasus yang lain yang sering kita gunakan juga yaitu pada aplikasi e-Banking. Kita bisa tranfer dengan bank yang berbeda, mereka berkomunikasi menggunkan sebuah Web Service / Web API.

Di aplikasi e-Banking kita juga bisa membeli pulsa, membeli token listrik, dan membayar tagihan lainnya. Jadi telkomsel punya API, PLN punya API, PDAM punya API, jadi semua punya API.

Kenapa semua punya API? Disatu sisi untuk kemudahan dan disisi lain bisa dijadikan bisnis.

Agar lebih mudah memahami sebuah API dapat kita ibaratkan API sebagai kegiatan di restoran.

  • Customer: sebagai client yang me-request ke Rest Derver.
  • Waiter : sebagai API, jalur penghubung antara kita customer dan dapur untuk meproduksi makanan.
  • Menu : bisa kita bayangkan sebagai REST API. Jadi aturan-aturan pemesanannya ada di menu supaya customer tidak bisa sembarangan memesan apapun yang dia mau.
  • Dapur : sebagai Rest server untuk memporses sesuai request customer.

Sama halnya kegiatan restoran dengan API:

  • API adalah penghubung
  • REST API adalah aturan
  • ada Request dan Response
  • ada data yang dikirim dan diterima berupa JSON

REST API Secara Detail

  • Singakatan dari REpresentational State Transfer
  • Disebut juga Gaya perancangan atau Architectural Style
  • Bersifat Stateless: REST API tidak boleh menyimpan keadaan (state) apapun terkait client. Seluruh state harus tetap disimpan di client. Artinya, tidak ada session di REST API. Permintaan yang dilakukan client harus mengandung informasi yang jelas. Jangan berharap RESTful API akan menyimpan informasi dari permintaan sebelumnya untuk digunakan di permintaan selanjutnya
  • diciptakan oleh Roy Fielding, pada disertasi PhD-nya
  • Protokolnya hampir selalu menggunkan HTTP
  • Memungkinkan interaksi antar mesin

HTTP (Hypertext Transfer Protocol)

Apa yang terjadi ketika kita mengetikkan goole.com pada browser kemudian enter lalu browser kalian menampilkan halaman utama goolge.

Jadi kita menuliskan alamat google.com yang di sebut dengan URL (Uniform Resource Locator). Jika didefinisikan secara ringkas URL adalah sebuah alamat untuk mengakses resource/sumber daya. Resource atau sumber daya bermacam-macam bisa berupa halaman html, gambar, bisa script, bisa css, intinya apapun yang kita akses pada sebuah halaman web disebut dengan resource.

Contoh URL:

  • https://www.facebook.com/index.php
  • https://ayongoding.com/index.php
  • https://www.ayongoding.com/uploads/rest-api.jpg
  • https://www.ayongoding.com/css/style.css

Perhatikan pada setiap url diatas, kuncinya disetiap akhir dari url yang kita akses pasti sebuah resource.

Maka sebenarnya yang terjadi di belakang layar ketika kita mengakses google.com pada browser adalah kita mengirim request ke server google, jika requestnya sukses maka server akan mengembalikan response berupa html. Kenapa HTML? Karena yang minta manusia, manusia butuh text, warna, gambar, sesuatu yang manarik, karena manusia memahaminya seperti itu. Request ini dikirimkan menggunkan method GET.

Kita juga bisa melakukan request tersebut menggunakan sebuah form, seperti form login dan form registrasi. Request dilakukan beserta data yang ada di dalam form. Request ini dikirimkan menggunkan method POST.

Jadi proses di atas di lakukan oleh manusia, proses tersebut dapat di lihat pada gambar berikut ini:

Request HTTP
Request HTTP

Sekarang kita contohkan lebih detail lagi pada sebuah aplikasi untuk manajemen data mahasiswa yang di dalamnya terdapat fungsi tampil, tambah, edit, dan hapus.

Web-app request
Web-app request

Arsitektur REST API

Sebuah REST API dapat diilustrasikan dengan gambar berikut ini:

Arsitektur REST API
Arsitektur REST API

Perhatikan gambar ilustrasi diatas, yang terjadi ketika kita mengakses sebuah aplikasi yaitu lakukan dulu request berserta data kalau ada. lalu server aplikasi mengirimkan request ke rest server / Rest API punya orang lain dengan format data JSON agar dikenali oleh Rest server. kemudian dilakukan proses di rest server. jika berhasil data dikembalikan berupa JSON dan diterima oleh server aplikasi. lalu response diubah kembali menjadi html karena manusia yang akan melihat.

Pada bagian yang ditandai dengan kotak berwarna merah disebut dengan Rest Client. Rest Client ini bisa bermacam-macam, bisa berupa aplikasi web, aplikasi mobile (Android / iOS), smart home dan lain-lain.

Kode Status

  • kode 200: Success
  • kode 404: Not Found
  • kode 500: Server Error

sumber: https://en.wikipedia.org/wiki/List_of_HTTP_status_codes

Kenapa butuh kode status? karena yang berinteraksi dalam API adalah mesin dengan mesin. server hanya bisa membaca status dari sebuah request apakah sukses atau tidak berdasarkan kode status tersebut. berbeda dengan manusia butuh html (text, gambar, warna, dan lain-lain) untuk melihat tampilan response dari server.

RESTful API

Apa bedanya REST API dengan RESTful API?

Tidak RESTful API
Tidak RESTful API

Pada HTTP Method dikenal beberapa istilah yang dikenal sebagai ENDPOINTS, berikut penjelasan dari empat macam ENDPOINTS.

  1. GET : Metode ini digunakan untuk mengambil data.
    Contoh : GET localhost/web-app/pegawai/ atau GET localhost/web-app/pegawai/12
  2. POST : Metode ini digunakan untuk mengambil data.
    Contoh : POST localhost/web-app/pegawai
  3. PUT : Metode ini digunakan untuk mengubah data tetapi metode ini tidak dapat digunakan di browser.
    Contoh : PUT localhost/web-app/pegawai/33
  4. DELETE : Metode ini digunakan untuk menghapus data tetapi metode ini tidak dapat digunakan di browser.
    Contoh : DELETE localhost/web-app/pegawai/44

    sumber: https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol

RESTful API bersifat Stateless, yang artinya tidak adanya state dalam sebuah aplikasi. Sifat statelessmembuat setiap request HTTP dilakukan secara terisolasi, server tidak menyimpan state apapun mengenai sesi dari client, setiap request dari client harus berisi semua informasi yang dibutuhkan server termasuk informasi otentikasi, dan stateless merupakan salah satu syarat untuk membuat RESTful API.

RESTful API
RESTful API

Jadi, dapat disimpulkan bahwa dalam membuat sebuah RESTful API terdapat beberapa syarat, yaitu sebagai berikut.

  • Menggunakan HTTP method yang benar (GET, PUT, POST, DELETE)
  • ENDPOINTS yang digunakan berupa kata benda
  • Bersifat stateless
  • Menggunakan REST secara benar

Sekian dulu tutorial kita tentang konsep dan defenisi REST dan HTTP. Pada tutorial selanjutnya kita akan membahas topik yang cukup penting yang menjadi bagian dari REST API yaitu mengenai JSON (JavaScript Oject Notation).

Tutorial Selanjutnya:

Tutorial REST API #3: Apa itu JSON?

Web Programmer. Flutter Developer. Content Creator. Founder Ayongoding.com. Penyuka minuman sachet. Menulis pakai tangan kanan. Masih main mobilan remot. Dan pernah kuliah Sistem Informasi sampai lulus.

Leave a Reply

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