JavaRush /Java Blog /Random-ID /Ikhtisar REST. Bagian 1: Apa itu REST

Ikhtisar REST. Bagian 1: Apa itu REST

Dipublikasikan di grup Random-ID
Halo, hari ini kita akan mempelajari topik yang sangat menarik, dan yang terpenting, topik yang banyak diminati di pasar tenaga kerja - REST. Ikhtisar REST.  Bagian 1: Apa itu REST - 1Kami akan membagi ikhtisar REST menjadi tiga bagian:
  1. Pada bagian pertama, kita akan membahas sejarah REST dan menjelaskan prinsip-prinsip yang menjadi dasar REST.

  2. Pada bagian kedua, kita akan melihat bagaimana komunikasi terjadi antara klien dan server melalui protokol HTTP.

  3. Yang ketiga, kita akan menulis aplikasi kecil RESTful, yang akan kita uji menggunakan program Postman.

Artikel ini ditujukan agar pembaca memahami istilah-istilah berikut:
  • HTTP;
  • URL dan URI;
  • JSON dan pada tingkat lebih rendah XML;
  • Injeksi Ketergantungan.

Bagian 1. Apa itu REST

REST, seperti banyak hal di dunia TI, adalah singkatan dari Representational State Transfer . Ini adalah gaya arsitektur interaksi antara komponen sistem terdistribusi dalam jaringan komputer. Sederhananya, REST mendefinisikan gaya interaksi (pertukaran data) antara berbagai komponen sistem, yang masing-masing mungkin secara fisik berlokasi di tempat berbeda. Gaya arsitektur ini mewakili serangkaian batasan yang konsisten yang dipertimbangkan ketika merancang sistem terdistribusi. Pembatasan ini terkadang disebut prinsip REST. Jumlahnya tidak banyak, hanya 6 buah. Kita akan membicarakannya nanti.
Aplikasi yang dibangun dengan mempertimbangkan REST, mis. yang tidak melanggar batasan yang diberlakukan oleh REST disebut RESTful.

Sejarah REST

Istilah REST diciptakan oleh Roy Fielding, salah satu pencipta protokol HTTP, dalam disertasi doktoralnya “Gaya Arsitektur dan Desain Arsitektur Perangkat Lunak Berbasis Jaringan” pada tahun 2000. Kita dapat mengatakan bahwa istilah REST masih muda, meskipun konsepnya mendasari World Wide Web. Kami tidak akan mendalami sejarah asal usul istilah ini. Jika Anda ingin mendalami sumber aslinya, lihatlah disertasi Fielding .

Pembatasan dan prinsip REST

Sebagaimana dinyatakan di atas, REST mendefinisikan bagaimana komponen sistem terdistribusi harus berinteraksi satu sama lain. Secara umum, ini terjadi melalui permintaan-respons. Komponen yang mengirimkan permintaan disebut klien ; Komponen yang memproses permintaan dan mengirimkan respons ke klien disebut server . Permintaan dan tanggapan paling sering dikirim melalui HTTP (HyperText Transfer Protocol). Biasanya, server adalah sejenis aplikasi web. Kliennya bisa bukan apa saja, tapi cukup banyak. Misalnya aplikasi mobile yang meminta data dari server. Atau browser yang mengirimkan permintaan dari halaman web ke server untuk mendownload data. Aplikasi A dapat meminta data dari aplikasi B. Kemudian A adalah klien yang berhubungan dengan B, dan B adalah server yang berhubungan dengan A. Pada saat yang sama, A dapat memproses permintaan dari C, D, D, dan seterusnya. Dalam hal ini, aplikasi A adalah server dan klien. Itu semua tergantung pada konteksnya. Satu hal yang jelas: komponen yang mengirimkan permintaan adalah klien. Komponen yang menerima, memproses dan merespon permintaan tersebut adalah server. Namun, tidak semua sistem yang komponennya berkomunikasi melalui permintaan-respons adalah sistem REST (atau RESTful). Agar suatu sistem dianggap RESTful, sistem tersebut harus “sesuai” dengan enam batasan REST:

1. Membawa arsitektur ke model client-server

Dasar dari keterbatasan ini adalah pembedaan kebutuhan. Kebutuhan antarmuka klien perlu dipisahkan dari kebutuhan server yang menyimpan data. Keterbatasan ini meningkatkan portabilitas kode klien ke platform lain, dan penyederhanaan bagian server meningkatkan skalabilitas sistem. Perbedaan antara “klien” dan “server” memungkinkan mereka untuk berkembang secara independen satu sama lain.

2. Kurangnya kondisi

Arsitektur REST memerlukan kondisi berikut untuk dipenuhi. Di antara permintaan, server tidak perlu menyimpan informasi tentang status klien dan sebaliknya. Semua permintaan dari klien harus terstruktur sehingga server menerima semua informasi yang diperlukan untuk menyelesaikan permintaan tersebut. Dengan cara ini, baik server maupun klien dapat “memahami” pesan apa pun yang diterima tanpa bergantung pada pesan sebelumnya.

3. Penyimpanan dalam cache

Klien dapat menyimpan tanggapan server dalam cache. Hal ini, pada gilirannya, harus secara eksplisit atau implisit ditetapkan sebagai dapat di-cache atau tidak dapat di-cache, sehingga klien tidak menerima data basi atau salah sebagai respons terhadap permintaan berikutnya. Penggunaan caching yang tepat membantu menghilangkan beberapa interaksi klien-server, seluruhnya atau sebagian, sehingga semakin meningkatkan kinerja dan ekstensibilitas sistem.

4. Keseragaman antarmuka

Persyaratan mendasar arsitektur REST mencakup antarmuka yang terpadu dan seragam. Klien harus selalu memahami format apa dan ke alamat mana ia perlu mengirim permintaan, dan server, pada gilirannya, juga harus memahami format apa yang harus merespons permintaan klien. Ini adalah format terpadu untuk interaksi klien-server, yang menjelaskan apa, di mana, dalam bentuk apa dan bagaimana mengirim dan merupakan antarmuka terpadu

5. Lapisan

Lapisan mengacu pada struktur hierarki jaringan. Terkadang klien dapat berkomunikasi langsung dengan server, dan terkadang hanya dapat berkomunikasi dengan node perantara. Penggunaan server perantara dapat meningkatkan skalabilitas melalui penyeimbangan beban dan caching terdistribusi. Mari kita beri contoh. Bayangkan sebuah aplikasi mobile yang populer di seluruh dunia. Bagian integralnya adalah memuat gambar. Karena terdapat jutaan pengguna, satu server tidak dapat menahan beban seberat itu. Membagi sistem menjadi beberapa lapisan akan menyelesaikan masalah ini. Klien akan meminta gambar dari node perantara, node perantara akan meminta gambar dari server yang paling sedikit dimuat saat ini, dan akan mengembalikan gambar tersebut ke klien. Jika caching diterapkan dengan benar di setiap tingkat hierarki, maka skalabilitas sistem yang baik dapat dicapai.

6. Kode sesuai permintaan (pembatasan opsional)

Keterbatasan ini menyiratkan bahwa klien dapat memperluas fungsinya dengan mendownload kode dari server dalam bentuk applet atau skrip.

Manfaat REST

Aplikasi yang mematuhi semua batasan di atas memiliki keuntungan sebagai berikut: keandalan (tidak perlu menyimpan informasi status klien, yang mungkin hilang);
  • kinerja (karena penggunaan cache);
  • skalabilitas;
  • transparansi sistem interaksi;
  • kesederhanaan antarmuka;
  • portabilitas komponen;
  • kemudahan melakukan perubahan;
  • kemampuan untuk berkembang, beradaptasi dengan persyaratan baru.
Bagian 2: komunikasi antara klien dan server Bagian 3: membuat layanan RESTful di Spring Boot
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION