CodeGym/Java Blog/Acak/Sekilas tentang REST. Bagian 2: Komunikasi antara klien d...
John Squirrels
Level 41
San Francisco

Sekilas tentang REST. Bagian 2: Komunikasi antara klien dan server

Dipublikasikan di grup Acak
anggota
Sekilas tentang REST. Bagian 1: Apa itu REST? Pada bagian ini, kita akan mendalami bagaimana komunikasi terjadi antara klien dan server. Sepanjang jalan, kami akan mengungkap istilah baru dan menjelaskannya. Sekilas tentang REST.  Bagian 2: Komunikasi antara klien dan server - 1Untuk memastikan semuanya jelas, kami akan menganalisis komunikasi klien-server menggunakan aplikasi RESTful sebagai contoh. Misalkan kita sedang mengembangkan aplikasi web yang menyimpan informasi tentang pelanggan dan pesanan mereka. Dengan kata lain, sistem kami dapat melakukan operasi pada entitas tertentu: membuat, mengedit, dan menghapusnya, serta menampilkan informasi tentangnya. Entitas ini akan menjadi:
  • pelanggan (pelanggan)
  • pesanan (pesanan pelanggan)
  • barang (produk)
Dalam arsitektur RESTful, klien mengirim permintaan ke server untuk mengambil atau memodifikasi data, dan kemudian server mengirim tanggapan klien atas permintaan mereka.

Permintaan

Permintaan klien hampir selalu dibuat menggunakan protokol HTTP. Secara umum, permintaan HTTP terdiri dari beberapa komponen:
  • Metode HTTP
  • tajuk
  • URI
  • badan permintaan
Di bawah ini kami akan mempertimbangkan setiap komponen secara lebih rinci.

URI dan resource

Data yang diterima atau dimodifikasi klien melalui permintaan disebut sumber daya. Komunikasi klien-server adalah tentang memanipulasi sumber daya. Di REST, sumber daya adalah segala sesuatu yang dapat Anda beri nama. Dalam arti tertentu, mereka seperti kelas-kelas di Jawa. Di Java, kita bisa membuat kelas untuk apa saja. Jadi di REST, resource bisa apa saja: pengguna, dokumen, laporan, pesanan. Ini bisa berupa abstraksi dari beberapa entitas, atau sesuatu yang spesifik, misalnya gambar, video, animasi, atau file PDF. Dalam contoh kami, kami memiliki 3 sumber daya:
  • pelanggan (pelanggan)
  • pesanan (pesanan pelanggan)
  • barang (produk)
Klien mengirim permintaan ke lokasi sumber daya yang dikenal sebagai titik akhir. Sederhananya, titik akhir seperti alamat di jaringan. Menyelam lebih dalam, kita dapat mengatakan bahwa titik akhir adalah URI, yaitu urutan karakter yang mengidentifikasi sumber daya abstrak atau fisik. Pengidentifikasi sumber daya seragam (URI) Terkadang titik akhir, atau URI, disebut jalur, artinya jalur ke sumber daya. Untuk keperluan artikel ini, kami akan menggunakan istilah URI. Setiap sumber daya tertentu harus memiliki URI yang unik. Pengembang server bertanggung jawab untuk memastikan bahwa setiap sumber daya selalu memiliki URI sendiri. Dalam contoh kami, kami adalah pengembang, jadi kami akan melakukannya dengan cara yang kami tahu caranya. Seperti biasa menetapkan pengidentifikasi numerik sebagai kunci utama dalam database relasional, setiap sumber daya juga memiliki ID sendiri di REST. ID resource di REST sering cocok dengan ID record di database yang menyimpan informasi tentang resource. REST URI biasanya dimulai dengan bentuk jamak dari kata benda yang menjelaskan beberapa sumber daya. Misalnya, "
  • / pelanggan — URI dari semua pelanggan yang tersedia
  • /customers/23 — URI dari pelanggan tertentu, yaitu pelanggan dengan ID=23
  • /customers/4 — URI dari pelanggan tertentu, yaitu pelanggan dengan ID=4.
Tapi itu belum semuanya. Kami dapat memperpanjang URI dengan menambahkan pesanan:
  • /customers/4/orders — URI dari semua pesanan yang dibuat oleh pelanggan No.4
  • /pelanggan/1/pesanan/12 — URI pesanan No. 12 dibuat oleh pelanggan No. 1.
Jika kami melanjutkan ekspansi dengan menambahkan lebih banyak produk, kami mendapatkan:
  • /customers/1/orders/12/items — URI daftar semua produk dalam pesanan No. 12 yang dibuat oleh pelanggan No. 1.
Saat kami menambahkan level penyarangan, hal yang penting adalah membuat URI intuitif.

Metode HTTP

Metode HTTP adalah urutan karakter apa pun (kecuali untuk karakter kontrol dan pembatas), yang menunjukkan operasi utama yang dilakukan pada sumber daya. Ada beberapa metode HTTP umum. Kami akan membuat daftar yang paling sering digunakan dalam layanan RESTful:
  • DAPATKAN — Dapatkan informasi tentang sumber daya tertentu (melalui ID-nya) atau tentang kumpulan sumber daya
  • POST — Buat sumber daya baru
  • PUT — Mengubah sumber daya (melalui ID-nya)
  • HAPUS — Hapus sumber daya (melalui ID-nya)

Header

Permintaan, serta tanggapan, berisi tajuk HTTP. Mereka menyampaikan informasi tambahan tentang permintaan (atau tanggapan). Header adalah pasangan nilai kunci. Anda dapat melihat daftar tajuk paling umum di Wikipedia . Sedangkan untuk REST, klien sering mengirim header "Terima" dalam permintaan ke server. Header ini diperlukan untuk memberi tahu server format apa yang diharapkan klien untuk menerima respons. Berbagai format diberikan dalam daftar tipe MIME. MIME (Multipurpose Internet Mail Extensions) adalah spesifikasi untuk menyandikan informasi dan memformat pesan sehingga dapat dikirim melalui Internet. Setiap tipe MIME terdiri dari dua bagian yang dipisahkan oleh garis miring — sebuah tipe dan subtipe. Contoh tipe MIME untuk tipe file yang berbeda:
  • teks — teks/biasa, teks/css, teks/html
  • gambar — gambar/png, gambar/jpeg, gambar/gif
  • audio — audio/wav, audio/mpeg
  • video — video/mp4, video/ogg
  • aplikasi — aplikasi/json, aplikasi/pdf, aplikasi/xml, aplikasi/octet-stream
Misalnya, permintaan dapat memiliki tajuk seperti ini:
Accept:application/json
Header ini memberi tahu server bahwa klien mengharapkan untuk menerima respons dalam format JSON.

Badan permintaan

Ini adalah pesan yang dikirim oleh klien ke server. Apakah permintaan memiliki badan atau tidak bergantung pada jenis permintaan HTTP. Misalnya, permintaan GET dan DELETE umumnya tidak berisi isi permintaan apa pun. Tapi permintaan PUT dan POST bisa — itu tergantung pada tujuan permintaan. Lagi pula, untuk menerima dan/atau menghapus data menggunakan ID (yang diteruskan di URL), Anda tidak perlu mengirim data tambahan ke server. Tetapi untuk membuat sumber daya baru (melalui permintaan POST), Anda perlu mengirimkan sumber daya tersebut. Hal yang sama berlaku untuk memodifikasi sumber daya yang ada. Di REST, isi permintaan paling sering dikirim dalam format XML atau JSON. Format JSON adalah yang paling umum. Misalkan kita ingin mengirim permintaan ke server untuk membuat resource baru. Jika Anda belum lupa, kami mempertimbangkan contoh aplikasi yang mengelola pesanan pelanggan. Katakanlah kita ingin membuat pelanggan baru. Dalam kasus kami, kami menyimpan informasi pelanggan berikut: Nama, email, nomor telepon. Maka isi permintaan bisa berupa JSON berikut:
{
  "name" : "Amigo",
  "email" : "amigo@jr.com",
  "phone" : "+1 (222) 333-4444"
}

Menyatukan permintaan

Jadi, kami telah memeriksa apa yang mungkin ada dalam permintaan klien. Kami sekarang akan memberikan beberapa contoh permintaan bersama dengan deskripsi
Meminta Keterangan
GET /customers/23
Accept : application/json, application/xml
Dapatkan informasi tentang pelanggan No. 23 dalam format JSON atau XML
POST /customers
{
  "name" : "Amigo",
  "email" : "amigo@jr.com",
  "phone" : "+1 (222) 333-4444"
}
Buat pelanggan baru dengan bidang-bidang berikut:
Nama — Amigo
Email — amigo@jr.com
Nomor telepon — +1 (222) 333-4444
PUT /customers/1
{
  "name" : "Ben",
  "email" : "bigben@jr.com",
  "phone" : "+86 (868) 686-8686"
}
Edit nomor pelanggan 1 sebagai berikut:
Nama — Ben
Email — bigben@jr.com
Nomor telepon — +86 (868) 686-8686
DELETE /customers/12/orders/6
Hapus pesanan No. 6 yang dibuat oleh pelanggan No. 12 dari sistem

Tanggapan

Katakanlah beberapa patah kata tentang respons server. Respons biasanya terdiri dari bagian-bagian berikut:
  • Kode respon
  • header
  • badan tanggapan
Secara umum, response header tidak jauh berbeda dengan request header. Selain itu, beberapa header digunakan dalam tanggapan dan permintaan. Saya pikir semuanya juga jelas mengenai badan permintaan. Tubuh sering mengembalikan informasi yang diminta oleh klien. Informasi yang dikembalikan sebagai tanggapan atas permintaan GET mungkin juga dalam format JSON. Tapi bagian terakhir sedikit lebih menarik.

Kode respons HTTP

Mari pertimbangkan kode respons HTTP lebih detail. Kode status HTTP adalah bagian dari baris pertama respons server terhadap permintaan yang dibuat melalui protokol HTTP. Ini adalah bilangan bulat yang terdiri dari tiga digit desimal. Digit pertama menunjukkan kelas kode status respons. Kode tanggapan biasanya diikuti dengan frase penjelas dalam bahasa Inggris, dipisahkan dengan spasi. Frasa ini adalah alasan yang dapat dibaca manusia untuk tanggapan tersebut. Contoh:
  • 201 Dibuat
  • 401 Tidak sah
  • 507 Penyimpanan Tidak Cukup
Kode respons memberi tahu klien hasil permintaan dan memungkinkannya untuk menentukan tindakan apa yang harus diambil selanjutnya. Kode respons dibagi menjadi beberapa kelas atau grup:
  • 1XX — Informasi
  • 2XX — Kode ini menunjukkan bahwa permintaan klien berhasil diterima dan diproses
  • 3XX — Kode-kode ini memberi tahu klien bahwa permintaan tambahan, biasanya ke URI yang berbeda, harus dilakukan agar berhasil menyelesaikan operasi
  • 4XX — Kesalahan klien. Kode tersebut dapat dihasilkan dari permintaan yang salah disusun. Contoh lain adalah kode terkenal "404 Not Found", yang dapat terjadi saat klien meminta sumber daya yang tidak ada
  • 5XX — Kesalahan server. Kode-kode ini dikembalikan ke klien jika server bertanggung jawab atas kegagalan operasi
Sekilas tentang REST. Bagian 3: Membangun layanan RESTful di Spring Boot
Komentar
  • Populer
  • Baru
  • Lama
Anda harus login untuk memberikan komentar
Halaman ini belum memiliki komentar