Kata kerja HTTP mana yang harus saya gunakan untuk memicu tindakan di layanan web REST?
Saat mempertimbangkan detail layanan REST, sering kali bermanfaat untuk mempertimbangkan heuristik ini: bagaimana Anda mengimplementasikannya dengan situs web?
HTML hanya dapat menggambarkan secara alami permintaan GET dan POST. Jadi kita bisa mulai mencari di sana.
Apakah GET
pantas? Untuk menjawab pertanyaan ini, kita perlu memikirkan asumsi bahwa klien dan komponen perantara diperbolehkan membuat GET
. Semantik GET
yang aman
klien tidak meminta, dan tidak mengharapkan, perubahan apa pun pada server asal sebagai hasil dari penerapan metode aman ke sumber daya target. Demikian juga, penggunaan metode aman yang wajar tidak diharapkan dapat menyebabkan kerugian, kehilangan properti, atau beban yang tidak biasa pada server asal.
Implikasinya, oleh karena itu, adalah bahwa klien dan komponen perantara memiliki keleluasaan untuk memohon permintaan GET sesering yang diperlukan untuk memuaskan kekhawatiran mereka sendiri. Laba-laba dapat MENDAPATKAN sumber daya tanpa pandang bulu untuk memperbarui indeks mereka. Tembolok dapat diambil sebelumnya. Pada jaringan yang tidak dapat diandalkan, pesan yang hilang dapat dicoba sesering mungkin untuk memastikan setidaknya satu tanggapan.
Ini akan digunakan untuk memuat ulang konfigurasi, cache, dll.
Jika ini adalah hal-hal mahal yang harus dilakukan, maka mungkin Anda tidak ingin klien mengeluarkan permintaan ini atas kebijakan mereka sendiri.
POST
, di sisi lain, secara efektif tidak dibatasi - ini sangat mengurangi asumsi bahwa klien generik diperbolehkan membuat. Anda tidak mendapatkan komponen yang membuat permintaan POST spekulatif karena mereka akan salah melakukannya - tidak ada dalam standar yang mengatakan tidak apa-apa.
PUT
, PATCH
, DELETE
... ini adalah metode yang tidak aman dengan semantik lebih spesifik dari POST
; apakah mereka sesuai atau tidak akan tergantung pada model sumber daya Anda.
Gagasan penting yang perlu diingat adalah bahwa metode HTTP termasuk dalam domain dokumen (Lihat ceramah Jim Webber 2011 ), efek yang Anda uraikan mungkin bukan bagian dari domain dokumen, melainkan efek samping yang dipanggil ketika dokumen diubah . Itu memberi Anda banyak kebebasan dalam hal bagaimana Anda mengatur dokumen Anda untuk menyelesaikan pekerjaan.