Kata kerja HTTP mungkin salah satu hal yang paling samar tentang protokol HTTP. Mereka ada, dan ada banyak dari mereka, tetapi mengapa mereka ada?
Rails tampaknya ingin mendukung banyak kata kerja dan menambahkan beberapa kata kerja yang tidak didukung oleh browser web.
Berikut daftar lengkap kata kerja http: http://annevankesteren.nl/2007/10/http-methods
Ada tambalan HTTP dari RFC resmi: https://datatracker.ietf.org/doc/rfc5789/?include_text=1
The PATCH metode permintaan yang set perubahan yang dijelaskan dalam entitas permintaan diterapkan pada sumber daya diidentifikasi oleh Permintaan-URI. Set perubahan diwakili dalam format yang disebut "dokumen tambalan" yang diidentifikasi oleh jenis media. Jika Request-URI tidak menunjuk ke sumber daya yang ada, server MUNGKIN membuat sumber daya baru, tergantung pada jenis dokumen tambalan (apakah secara logis dapat mengubah sumber daya nol) dan izin, dll.
Perbedaan antara permintaan PUT dan PATCH tercermin dalam cara server memproses entitas terlampir untuk memodifikasi sumber daya yang diidentifikasi oleh Request-URI. Dalam permintaan PUT , entitas terlampir dianggap sebagai versi modifikasi dari sumber daya yang disimpan di server asal, dan klien meminta agar versi yang disimpan diganti. Dengan PATCH , bagaimanapun, entitas terlampir berisi serangkaian instruksi yang menggambarkan bagaimana sumber daya yang saat ini berada di server asal harus dimodifikasi untuk menghasilkan versi baru. The PATCH
metode mempengaruhi sumber daya diidentifikasi oleh Request-URI , dan juga
MEImemiliki efek samping pada sumber daya lain; yaitu, sumber daya baru dapat dibuat, atau yang sudah ada dimodifikasi, oleh aplikasi PATCH .
Sejauh yang saya tahu, kata kerja PATCH tidak digunakan karena dalam aplikasi rails ... Seperti yang saya pahami, kata kerja patch RFC harus digunakan untuk mengirim instruksi patch seperti ketika Anda melakukan perbedaan antara dua file. Alih-alih mengirim seluruh entitas lagi, Anda mengirim patch yang bisa jauh lebih kecil daripada mengirim ulang seluruh entitas.
Bayangkan Anda ingin mengedit file besar. Anda mengedit 3 baris. Alih-alih mengirim file kembali, Anda hanya perlu mengirim diff. Di sisi positifnya, mengirim permintaan tambalan dapat digunakan untuk menggabungkan file secara tidak sinkron. Sistem kontrol versi berpotensi menggunakan kata kerja PATCH untuk memperbarui kode dari jarak jauh.
Satu kemungkinan penggunaan lainnya agak terkait dengan database NoSQL, dimungkinkan untuk menyimpan dokumen. Katakanlah kita menggunakan struktur JSON untuk mengirim dan mengirim data dari server ke klien. Jika kami ingin menghapus suatu bidang, kami dapat menggunakan sintaksis yang mirip dengan yang ada di mongodb untuk $ unset . Sebenarnya, metode yang digunakan dalam mongodb untuk memperbarui dokumen mungkin dapat digunakan untuk menangani patch json.
Ambil contoh ini:
db.products.update(
{ sku: "unknown" },
{ $unset: { quantity: "", instock: "" } }
)
Kita dapat memiliki sesuatu seperti ini:
PATCH /products?sku=unknown
{ "$unset": { "quantity": "", "instock": "" } }
Terakhir, tetapi tidak sedikit, orang dapat mengatakan apa pun yang mereka inginkan tentang kata kerja HTTP. Hanya ada satu kebenaran, dan kebenaran ada di RFC.