JavaRush /Java Blog /Random-ID /Ikhtisar REST. Bagian 2: Komunikasi antara klien dan serv...

Ikhtisar REST. Bagian 2: Komunikasi antara klien dan server

Dipublikasikan di grup Random-ID
Bagian 1: Apa itu REST Pada bagian ini kita akan melihat lebih dekat bagaimana komunikasi terjadi antara klien dan server. Seiring berjalannya waktu, kami akan mengungkap istilah-istilah baru dan memberikan penjelasannya. Ikhtisar REST.  Bagian 2: komunikasi antara klien dan server - 1Untuk memperjelas semuanya, kami akan menganalisis komunikasi klien-server menggunakan contoh beberapa aplikasi RESTful. Katakanlah kita sedang mengembangkan aplikasi web yang mampu menyimpan informasi tentang pelanggan dan pesanan mereka. Itu. sistem kami mampu memanipulasi beberapa entitas: membuatnya, mengeditnya, menghapusnya, dan memberikan informasi tentangnya. Entitas-entitas ini adalah:
  • klien – klien;
  • pesanan - pesanan pelanggan;
  • barang – barang.
Dalam arsitektur REST, klien mengirimkan permintaan ke server untuk mendapatkan atau mengubah data, dan server mengirimkan respons ke klien atas permintaan mereka.

Permintaan

Permintaan klien hampir selalu dibuat melalui HTTP. Secara umum, permintaan HTTP terdiri dari beberapa komponen:
  • metode HTTP;
  • judul;
  • URI;
  • badan permintaan.
Di bawah ini kita akan melihat setiap bagian komponen secara lebih rinci.

URI dan Sumber Daya

Data yang diperoleh atau diubah klien melalui permintaan disebut sumber daya. Dasar interaksi klien-server adalah manipulasi sumber daya. Sumber daya di REST adalah segala sesuatu yang dapat diberi nama. Dalam arti tertentu, ini seperti kelas di Java. Di Java kita bisa membuat kelas untuk apa saja. Hal yang sama terjadi di REST - sumber daya bisa berupa apa saja: pengguna, dokumen, laporan, pesanan. Semua ini dapat berupa abstraksi suatu entitas atau sesuatu yang konkret, misalnya file - gambar, video, animasi, file PDF. Sebagai contoh, kami memiliki 3 sumber daya:
  • klien – klien;
  • pesanan - pesanan pelanggan;
  • barang – barang.
Klien mengirimkan permintaan ke apa yang disebut titik akhir, atau titik akhir. Sederhananya, titik akhir adalah sesuatu seperti alamat di jaringan. Untuk lebih mendalaminya, titik akhir adalah URI : rangkaian karakter yang mengidentifikasi sumber daya abstrak atau fisik. Uniform Resource Identifier - pengidentifikasi sumber daya terpadu. Terkadang titik akhir, atau URI, disebut jalur - jalur menuju sumber daya. Untuk keperluan artikel ini, kami akan menggunakan istilah URI. Setiap sumber daya tertentu harus memiliki URI unik. Tanggung jawab untuk memastikan bahwa setiap sumber daya selalu memiliki URI sendiri berada di pundak pengembang server. Dalam contoh kami, kami adalah pengembangnya, jadi kami akan melakukannya sesuai yang kami tahu caranya. Sama seperti dalam database relasional, kunci utama sering kali ditetapkan ke ID numerik tertentu, di REST setiap sumber daya memiliki ID sendiri. Sering terjadi bahwa ID sumber daya di REST cocok dengan ID catatan database tempat informasi tentang sumber daya ini disimpan. REST URI biasanya dimulai dengan bentuk jamak dari kata benda yang mendeskripsikan suatu sumber daya. Misalnya dari kata klien. Selanjutnya, ID ditunjukkan melalui garis miring - pengidentifikasi klien tertentu. Contoh:
  • /clients - URI dari semua klien yang ada;
  • /clients/23 - URI klien tertentu, yaitu klien dengan ID=23;
  • /clients/4 - URI klien tertentu, yaitu klien dengan ID=4.
Tapi bukan itu saja. Kita dapat memperluas URI dengan menambahkan perintah ke dalamnya:
  • /clients/4/orders — URI semua pesanan klien No.4;
  • /clients/1/orders/12 - URI pesanan No.12 klien No.1.
Jika kita melanjutkan rantai ini dan menambahkan barang, kita mendapatkan:
  • /clients/1/orders/12/items — URI daftar semua produk dalam pesanan No. 12 yang dibuat oleh klien No. 1.
Dengan level bertingkat, kuncinya adalah membuat URI menjadi intuitif.

metode HTTP

Metode HTTP (Metode HTTP Bahasa Inggris) adalah urutan karakter apa pun, kecuali kontrol dan pemisah, yang menunjukkan operasi utama pada sumber daya. Ada beberapa metode HTTP yang umum. Kami mencantumkan yang paling sering digunakan dalam layanan RESTful:
  • GET - digunakan untuk memperoleh informasi tentang sumber daya tertentu (melalui ID) atau kumpulan sumber daya;
  • POST - digunakan untuk membuat sumber daya baru;
  • PUT - digunakan untuk mengubah sumber daya (melalui ID);
  • HAPUS - digunakan untuk menghapus sumber daya (melalui ID).

Judul

Permintaan, serta tanggapan, berisi header HTTP. Mereka mengirimkan informasi tambahan tentang permintaan (atau tanggapan). Header adalah pasangan nilai kunci. Anda dapat membaca daftar judul paling umum di halaman Wikipedia . Dengan REST, klien sering kali dapat mengirimkan header Accept dalam permintaan mereka ke server. Hal ini diperlukan untuk memberi tahu server dalam format apa yang diharapkan klien untuk menerima respons darinya. Berbagai pilihan format disajikan dalam apa yang disebut daftar tipe MIME. MIME (Multi Purpose Internet Mail Extensions) adalah spesifikasi untuk menyandikan informasi dan memformat pesan sehingga dapat dikirim melalui Internet. Setiap tipe MIME terdiri dari dua bagian, dipisahkan dengan garis miring: tipe dan subtipe. Contoh tipe MIME untuk berbagai tipe file:
  • teks - teks/polos, 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/aliran oktet.
Secara total, permintaan tersebut mungkin memiliki header berikut:
Accept:application/json
Header ini memberi tahu server bahwa klien mengharapkan menerima respons dalam format JSON.

Permintaan tubuh

Pesan yang dikirim oleh klien ke server. Apakah suatu permintaan memiliki isi atau tidak bergantung pada jenis permintaan HTTP. Misalnya, permintaan GET dan DELETE biasanya tidak berisi isi permintaan apa pun. Namun PUT dan POST dapat berisi: semuanya tentang tujuan fungsional dari jenis permintaan. Lagi pula, untuk menerima data dan menghapusnya berdasarkan id (yang dikirimkan dalam URL), Anda tidak perlu mengirim data tambahan ke server. Namun untuk membuat sumber daya baru (permintaan POST), Anda perlu mentransfer sumber daya ini. Hal yang sama berlaku untuk memodifikasi sumber daya yang ada. Di REST, format XML atau JSON paling sering digunakan untuk mengirimkan isi permintaan. Format yang paling umum adalah JSON. Misalkan kita ingin mengirim permintaan ke server, dan di dalamnya membuat sumber daya baru. Jika Anda ingat, sebagai contoh kita melihat aplikasi yang mengelola pesanan pelanggan. Katakanlah kita ingin membuat klien baru. Dalam kasus kami, kami menyimpan informasi berikut tentang klien: Nama Email Nomor telepon Maka isi permintaan tersebut dapat berupa JSON berikut:
{
  "name" : "Amigo",
  "email" : "amigo@jr.com",
  "phone" : "+7 (191) 746-43-23"
}

Menyatukan permintaan

Jadi, kita telah melihat apa saja isi permintaan klien. Sekarang mari kita berikan beberapa contoh kueri dengan deskripsi
Meminta Keterangan

GET /clients/23
Accept : application/json, application/xml
Dapatkan informasi tentang klien No. 23 dalam format json atau xml

POST /clients
{
  "name" : "Amigo",
  "email" : "amigo@jr.com",
  "phone" : "+7 (191) 746-43-23"
}
Buat klien baru dengan kolom berikut:
Nama - Amigo
Email - amigo@jr.com
Telp. — +7 (191) 746-43-23

PUT /clients/1
{
  "name" : "Ben",
  "email" : "bigben@jr.com",
  "phone" : "+380 (190) 346-42-13"
}
Edit klien #1 sebagai berikut:
Nama - Ben
Email - bigben@jr.com
Telp. — +380 (190) 346-42-13

DELETE /clients/12/orders/6
Hapus pesanan No. 6 dari pelanggan No. 12 dari sistem

Jawaban

Katakanlah beberapa kata tentang tanggapan server. Jawabannya biasanya terdiri dari bagian-bagian berikut:
  • Kode respon;
  • header;
  • badan respons.
Secara umum, header respons tidak jauh berbeda dengan header permintaan. Selain itu, beberapa header digunakan dalam respons dan permintaan. Saya pikir semuanya sudah jelas dengan responnya juga. Badan sering kali mengembalikan informasi yang diminta klien. Informasi dapat dikembalikan dalam format JSON yang sama untuk permintaan GET. Namun bagian terakhir sedikit lebih menarik.

Kode respons HTTP

Mari kita lihat lebih dekat kode respons HTTP. Berikut kutipan dari Wikipedia: Kode status HTTP adalah bagian dari baris pertama respons server terhadap permintaan melalui protokol HTTP. Ini adalah bilangan bulat dengan tiga angka desimal. Digit pertama menunjukkan kelas dari kondisi tersebut. Kode respons biasanya diikuti dengan frasa penjelasan dalam bahasa Inggris yang dipisahkan oleh spasi, yang menjelaskan kepada orang tersebut alasan respons tersebut. Contoh:
  • 201 Dibuat;
  • 401 Tidak Sah;
  • 507 Penyimpanan Tidak Memadai.
Klien belajar dari kode respons tentang hasil permintaannya dan menentukan tindakan apa yang harus diambil selanjutnya. Kode respon dibagi menjadi beberapa kelompok:
  • 1ХХ - informasional;
  • 2ХХ - menginformasikan tentang kasus keberhasilan penerimaan dan pemrosesan permintaan klien;
  • 3XX - beri tahu klien bahwa agar berhasil menyelesaikan operasi, perlu membuat permintaan lain, biasanya menggunakan URI yang berbeda;
  • 4ХХ - kesalahan klien. Misalnya, permintaan yang dibuat secara salah atau kode 404 Not Found yang terkenal, yang dapat terjadi ketika klien meminta sumber daya yang tidak ada;
  • 5ХХ - kesalahan server. Dikembalikan ke klien jika operasi gagal karena kesalahan server.
Anda dapat membaca lebih lanjut tentang semua kode di sini . Bagian 1: Apa itu REST Bagian 3: Membuat layanan RESTful di Spring Boot
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION