Sobes.tech
Middle

Արդյոք բոլոր HTTP մեթոդները իդեմպոտենտ են?

sobes.tech AI

Պատասխան AI-ից

Ոչ, բոլոր HTTP մեթոդները չէինպոտենտ չեն:

Իդեմպոտենտությունը նշանակում է, որ եթե նույն հարցումը կատարեք մի քանի անգամ նույն պարամետրերով, սերվերի կողմում արդյունքը չի փոխվի առաջին հաջողակ կատարման հետո:

Հիմնական HTTP մեթոդները և նրանց իդեմպոտենտությունը՝

Մեթոդ Են իդեմպոտենտ? Նպատակը
GET Այո Տվյալների ստացում
HEAD Այո Պատասխան գլխագրերի ստացում
PUT Այո Կառուցել կամ ամբողջությամբ փոխարինել ռեսուրսը
DELETE Այո Ռեսուրսը ջնջել
POST Ոչ Տվյալներ ուղարկել ռեսուրս ստեղծելու կամ գործողություն կատարելու համար
PATCH Ոչ Ռեսուրսի մասնակի թարմացում

POST և PATCH չեն իդեմպոտենտ, քանի որ յուրաքանչյուր նրանց կատարմամբ կարող է ստեղծվել նոր ռեսուրս կամ փոխվել ռեսուրսի վիճակը՝ կախված իրականացմանից, ինչը չի լինում միանման առաջին հաջող կատարման հետո։ Օրինակ, մի քանի անգամ POST հարցում ուղարկելը սովորաբար հանգեցնում է մի քանի օգտատերերի ստեղծման:

Ոչ իդեմպոտենտ POST օրինակ՝

{
  "username": "testuser"
}

Ուղարկելով այս POST հարցումը՝ կարող է ստեղծվել նոր օգտատեր՝ username: "testuser"՝ յուրաքանչյուր կանչի ժամանակ:

Իդեմպոտենտ PUT օրինակ՝

{
  "id": 123,
  "status": "completed"
}

Ուղարկելով այս PUT հարցումը՝ ռեսուրսի ID-ով 123՝ նրա կարգավիճակը կտեղադրվի "completed"։ Կրկնակի ուղարկումը չի փոխի կարգավիճակը, եթե այն արդեն "completed" է։