POST vs. PUT

По какво се различават?

Една проста но и съществена разлика между POST и PUT:

POST is not idempotent, тоест колкото и пъти да изпращаме един и същ рекуест, винаги ще създаде нов ресурс. Все едно INSERT в SQL.

PUT is idempotent, колкото и PUT рекуеста да пуснем, резултатът ще е винаги еднакъв. Все едно UPDATE (или INSERT ако няма такъв) в SQL. Просто ако първият път този ресурс не съществува – ще го съзададе, а всеки последващ PUT рекуест – ще го променя.

Тоест, с PUT изцяло променяш ресурса, тоест каквото подадеш като данни, презаписва старото. Ако искаш да промениш само някои полета – тогава PATCH.

PUT променя целият ресурс анблок, и разбира се, трябва да знаем за кой конкретен ресурс става дума. Ако даденият ресур е имал много данни, но с даден PUT рекуест подадем само едно поле, това ще е новият ресурс при сървъра. Това пък е разликата с PATCH метода.

С POST можеш да изпращаш колкото искаш различни рекуести с различни или еднакви данни, към един и същ URI адрес, но сървърът ще създава отделни ресурси за всеки рекуест.

С PUT трябва предварително да знаеш кой конкретно ресурс ще променяш. PUT е за конкретни ресурси.

По какво си приличат?

POST и PUT си приличат по това, че и с двата можеш да създаваш ресурси на сървъра, но когато го правиш с PUT, трябва предварително да знаеш на кой URI адрес ще се намира новият ресурс. Тоест, не само какво, но и къде искаш да бъде създаден.

С POST всички рекуести се подават на едно URI, а сървърът вече евентуално създава уникален URI за всеки нов ресурс.

Вашият коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *