PATCH
permintaan menguraikan serangkaian operasi untuk diterapkan pada sumber daya, jika Anda menerapkan rangkaian operasi yang sama dua kali pada sumber daya yang sama, hasilnya mungkin tidak sama. Ini karena mendefinisikan operasi terserah Anda. Dengan kata lain Anda harus mendefinisikan aturan penggabungan .
Ingatlah bahwa PATCH
permintaan dapat digunakan untuk menambal sumber daya dalam berbagai format, bukan hanya JSON.
Jadi PATCH
permintaan bisa menjadi idempoten jika Anda mendefinisikan aturan penggabungan menjadi idempoten .
Contoh idempoten:
// Original resource
{
name: 'Tito',
age: 32
}
// PATCH request
{
age: 33
}
// New resource
{
name: 'Tito',
age: 33
}
Contoh non-idempoten:
// Original resource
{
name: 'Tito',
age: 32
}
// PATCH request
{
$increment: 'age'
}
// New resource
{
name: 'Tito',
age: 33
}
Dalam contoh kedua saya menggunakan sintaksis "Mongo like" yang saya buat untuk menambah atribut. Jelas ini bukan idempoten, karena mengirimkan permintaan yang sama beberapa kali akan menghasilkan hasil yang berbeda setiap kali.
Sekarang Anda mungkin bertanya-tanya apakah menggunakan sintaks yang dibuat seperti itu valid. Menurut standar , itu adalah:
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.
Dan Anda mungkin juga bertanya-tanya apakah itu tenang untuk menggunakan PATCH
permintaan dengan cara ini, dan banyak orang menganggapnya tidak, inilah jawaban yang baik dengan banyak komentar tentang masalah ini.
{"name": "bendjamin franklin"}