PUT va PATCH o'rtasidagi farq nimada?
JuniorHTTP #http #rest
Savol
PUT va PATCH metodlari bir-biridan nimasi bilan farq qiladi?
Qisqa javob
PUT resursni butunlay almashtiradi — klient obyektning to'liq ko'rinishini yuborishi kerak. PATCH esa faqat yuborilgan maydonlarni yangilaydi, qolganlari o'zgarishsiz qoladi.
Batafsil javob
PUT: server to'liq obyektni kutadi. Agar biror maydon yuborilmasa, u o'chirilishi yoki standart qiymatga qaytarilishi mumkin — chunki server so'rovni "resursning butunlay yangi holati" deb talqin qiladi.PATCH: server qisman o'zgartirish qo'llaydi — o'zgargan maydonlar to'plami yoki ko'rsatmalar. Resursning qolgan qismiga tegilmaydi.
Idempotentlik bo'yicha:
PUTidempotent: bir xil so'rovni qayta yuborish bir xil natija beradi.PATCHodatda idempotent bo'lishi shart emas (masalan, so'rov tanasi "hisoblagichni 1 taga oshirish" ko'rsatmasi bo'lsa, qayta chaqirish natijani o'zgartiradi).
Misol
// PUT — foydalanuvchining BARCHA maydonlarini yuborish kerak,
// aks holda yuborilmagan maydonlar o'chirilib ketishi mumkin
await fetch('/api/users/1', {
method: 'PUT',
body: JSON.stringify({ name: 'Alice', age: 30, email: 'a@mail.com' })
})
// PATCH — faqat o'zgarayotgan qismini yuborish yetarli
await fetch('/api/users/1', {
method: 'PATCH',
body: JSON.stringify({ age: 31 })
})
Qo'shimcha savollar
PATCHidempotent bo'lishi mumkinmi? Qanday holatda?emailmaydonisizPUTyuborilsa nima bo'ladi — turli API'lar bunga qanday munosabatda bo'ladi?- Qat'iy REST/JSON API'larda
PATCHuchun qanday tana formati ko'pincha ishlatiladi (masalan, JSON Patch, RFC 6902)?