Оё ҳама усулҳои HTTP идемпотент ҳастанд?
sobes.tech AI
Ҷавоб аз AI
Юк, барча HTTP усуллари идемпотент эмас.
Идемпотентлик, агар сиз бир хил сўровни бир неча марта бир хил параметрлар билан бажарсангиз, сервер томонида натижа биринчи муваффақиятли бажарилгандан кейин ўзгармайдиганлигини англатади.
Асосий HTTP усуллари ва уларнинг идемпотентлиги:
| Усул | Идемпотентми? | Мақсад |
|---|---|---|
GET |
Ҳа | Маълумотларни олиш |
HEAD |
Ҳа | Жавоб сарлавҳаларини олиш |
PUT |
Ҳа | Манба ёки ресурсни тўлиқ алмаштириш ёки яратиш |
DELETE |
Ҳа | Манба ёки ресурсни ўчириш |
POST |
Йўқ | Маълумотларни юбориш, ресурс яратиш ёки амал бажариш |
PATCH |
Йўқ | Манба ёки ресурснинг қисман янгиланиши |
POST ва PATCH идемпотент эмас, чунки уларнинг ҳар бир бажарилиши янги ресурс яратиш ёки ресурс ҳолатини ўзгартиришга олиб келиши мумкин, бу биринчи муваффақиятли бажарилишдан кейин бир хил эмас. Масалан, фойдаланувчи яратиш учун POST сўровини кўп марта юбориш одатда бир неча фойдаланувчи яратади.
Идемпотент бўлмаган POST мисоли:
{
"username": "testuser"
}
Бундай POST сўровини юбориш ҳар чақиришда янги фойдаланувчи яратади.
Идемпотент PUT мисоли:
{
"id": 123,
"status": "completed"
}
Бу PUT сўровини ID-си 123 бўлган манбага юбориш унинг ҳолатини "completed" га ўрнатади. Такрор юбориш ҳолатни ўзгартирмайди, агар у олдиндан "completed" бўлса.