Արդյոք բոլոր 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" է։