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.
Saya menghabiskan beberapa jam dengan google dan menemukan jawabannya di sini
PUT => Jika pengguna dapat memperbarui semua atau hanya sebagian dari catatan , gunakan PUT (pengguna mengontrol apa yang diperbarui)
PATCH => Jika pengguna hanya dapat memperbarui sebagian catatan , ucapkan hanya alamat email (aplikasi mengontrol apa yang dapat diperbarui), gunakan PATCH.
Mengapa
Patch
PUT
Metode membutuhkan lebih banyak bandwidth atau menangani sumber daya penuh sebagai gantinya secara parsial. JadiPATCH
diperkenalkan untuk mengurangi bandwidth.Penjelasan tentang PATCH
PATCH
adalah metode yang tidak aman, atau idempoten, dan memungkinkan pembaruan penuh dan sebagian dan efek samping pada sumber daya lainnya.PATCH
adalah metode yang entitas terlampir berisi serangkaian instruksi yang menggambarkan bagaimana sumber daya yang saat ini berada di server asal harus dimodifikasi untuk menghasilkan versi baru.Di sini, informasi lebih lanjut tentang put and patch
sumber
PATCH
di antaraPOST
,PUT
dll tidak "aman", karena memodifikasi data Anda (memiliki efek samping). Dibandingkan denganGET
,OPTIONS
dll. (Metode aman) tempat Anda dapat memanggil titik akhir beberapa kali tanpa efek samping.put
jika saya ingin mengubah
first
nama saya kemudian kirim permintaan put untuk Pembaruantapi di sini ada satu masalah yaitu
put
permintaan bahwa ketika saya ingin mengirimput
permintaan saya harus mengirim semua dua parameter itufirst
danlast
jadi wajib untuk mengirim semua nilai lagi
patch :
patch
request said. hanya mengirim yangdata
mana yang Anda inginkanupdate
dan itu tidak akan mempengaruhi atau mengubah data lainnya.jadi tidak perlu mengirim semua nilai lagi. hanya saya ingin memperbarui nama depan saya jadi saya hanya perlu mengirim
first
nama untuk memperbarui.sumber
Berikut adalah perbedaan antara metode POST, PUT dan PATCH dari protokol HTTP.
POS
Metode HTTP.POST selalu membuat sumber daya baru di server. Ini permintaan non-idempoten yaitu jika pengguna memukul permintaan yang sama 2 kali itu akan membuat sumber daya baru jika tidak ada kendala.
Metode posting http seperti query INSERT dalam SQL yang selalu membuat catatan baru dalam database.
Contoh: Gunakan metode POST untuk menyimpan pengguna baru, memesan dll di mana server backend menentukan id sumber daya untuk sumber daya baru.
TARUH
Dalam metode HTTP.PUT sumber daya pertama kali diidentifikasi dari URL dan jika ada maka diperbarui jika tidak, sumber daya baru dibuat. Ketika sumber daya target ada itu menimpa sumber daya itu dengan badan baru yang lengkap. Itu adalah metode HTTP.PUT digunakan untuk MENCIPTAKAN atau memperbarui sumber daya.
Metode http put seperti query MERGE dalam SQL yang menyisipkan atau memperbarui catatan tergantung pada apakah catatan yang diberikan ada.
Permintaan PUT idempoten yaitu dengan menekan permintaan yang sama dua kali akan memperbarui rekaman yang ada (Tidak ada catatan baru yang dibuat). Dalam metode PUT, id sumber daya ditentukan oleh klien dan disediakan di url permintaan.
Contoh: Gunakan metode PUT untuk memperbarui pengguna atau pesanan yang ada.
PATCH
Metode HTTP.PATCH digunakan untuk modifikasi parsial ke sumber daya yaitu pembaruan delta.
Metode patch http seperti kueri UPDATE dalam SQL yang menetapkan atau memperbarui kolom yang dipilih saja dan bukan seluruh baris.
Contoh: Anda dapat menggunakan metode PATCH untuk memperbarui status pesanan.
PATCH / api / users / 40450236 / order / 10234557
Badan Permintaan: {status: 'Disampaikan'}
sumber
Ada batasan dalam PUT lebih dari PATCH saat melakukan pembaruan. Menggunakan PUT mengharuskan kita untuk menentukan semua atribut bahkan jika kita ingin mengubah hanya satu atribut. Tetapi jika kita menggunakan metode PATCH kita hanya dapat memperbarui bidang yang kita butuhkan dan tidak perlu menyebutkan semua bidang. PATCH tidak memungkinkan kami untuk mengubah nilai dalam array, atau menghapus atribut atau entri array.
sumber
Metode PUT dan PATCH pada dasarnya serupa, tetapi ada perbedaan utama.
PUT - dalam permintaan PUT , entitas yang terlampir akan dianggap sebagai versi sumber daya yang dimodifikasi yang berada di server dan akan diganti oleh entitas yang dimodifikasi ini.
PATCH - dalam permintaan PATCH , entitas terlampir berisi sekumpulan instruksi bahwa bagaimana entitas yang berada di server, akan dimodifikasi untuk menghasilkan versi yang lebih baru.
sumber
Menurut ketentuan HTTP,
PUT
Permintaan hanya seperti pernyataan pembaruan basis data.PUT
- digunakan untuk memodifikasi sumber daya yang ada (Sebelumnya POSTED). Di sisi lainPATCH
permintaan digunakan untuk memperbarui sebagian dari sumber daya yang ada.Sebagai contoh:
Detil pelanggan:
Kapan kami ingin memperbarui ke seluruh catatan? kita harus gunakan
Http
PUT
verb
untuk itu.seperti:
Di sisi lain, jika kita hanya ingin memperbarui bagian dari catatan, tidak seluruh catatan kemudian pergi untuk
Http
PATCH
verb
. seperti:PUT VS POST:
Saat menggunakan
PUT
permintaan, kami harus mengirim semua parameter seperti firstName, lastName, email, phoneNumber Where in Inpatch
request hanya mengirim parameter mana yang ingin kami perbarui dan tidak akan memengaruhi atau mengubah data lainnya.Untuk detail lebih lanjut silakan kunjungi: https://fullstack-developer.academy/restful-api-design-post-vs-put-vs-patch/
sumber
Metode Put and Patch serupa. Tetapi dalam rel memiliki metod yang berbeda. Jika kita ingin memperbarui / mengganti seluruh record maka kita harus menggunakan metode Put. Jika kami ingin memperbarui catatan tertentu, gunakan metode Patch.
sumber