Sobes.tech
Middle

Оё ҳама усулҳои 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" бўлса.