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. Untuk 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)
Permintaan
Permintaan klien hampir selalu dibuat menggunakan protokol HTTP. Secara umum, permintaan HTTP terdiri dari beberapa komponen:- Metode HTTP
- tajuk
- URI
- badan permintaan
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)
- / 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.
- /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.
- /customers/1/orders/12/items — URI daftar semua produk dalam pesanan No. 12 yang dibuat oleh pelanggan No. 1.
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
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 deskripsiMeminta | Keterangan |
---|---|
|
Dapatkan informasi tentang pelanggan No. 23 dalam format JSON atau XML |
|
Buat pelanggan baru dengan bidang-bidang berikut: Nama — Amigo Email — amigo@jr.com Nomor telepon — +1 (222) 333-4444 |
|
Edit nomor pelanggan 1 sebagai berikut: Nama — Ben Email — bigben@jr.com Nomor telepon — +86 (868) 686-8686 |
|
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
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
- 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
GO TO FULL VERSION