Модуль 7 · Урок 27

Methods, status codes, redirects і retry

Method задає request semantics, status описує результат спроби. QA перевіряє не «green 200», а intended effect, representation, headers, state transition і безпеку retry.

Safe / idempotent2xx–5xxRedirectsRetry

Method — контракт наміру

GET і HEAD є safe: client не просить змінити server state. PUT, DELETE і safe methods визначені як idempotent: кілька однакових intended requests мають той самий intended effect, хоча responses/logs можуть різнитися. POST не стає idempotent лише тому, що повтор іноді «працює».

MethodКлючова перевірка
GET / HEADNo requested mutation; HEAD має headers як GET без response content.
POSTCreated/processed outcome, duplicate protection і retry contract.
PUTTarget replacement/create semantics, full state та repeat effect.
DELETEIntended removal/unavailability, repeat behavior і dependent state.

Status code читається разом із method

2xxRequest отримано/зрозуміло/прийнято; 201 має created resource і зазвичай Location, 202 ще не доводить completion, 204 не має content.
3xxFurther action або selected representation; перевірте Location, method preservation і redirect chain.
4xxClient-side request issue у semantics протоколу; 401 потребує authentication challenge, 403 — refusal, 404 — target not found/concealed.
5xxServer усвідомлює failure або не може виконати request; клієнт не повинен автоматично припускати, що side effect відсутній.

Redirect contract

301/302 історично можуть привести user agent до GET; 303 прямо веде до retrieval representation після іншого method; 307/308 зберігають method і content. Перевіряйте absolute/relative Location, loops, chain length, secure scheme, cache behavior та whether sensitive fields/content потрапляють іншому origin.

Redirect success не дорівнює business success

Final 200 може бути login page після неочікуваного redirect. Збережіть кожний hop і фінальний state.

Retry без duplicate effects

Timeout може статися після того, як server уже committed state, але до response. Для unsafe operation retry потребує idempotency key, operation status lookup або explicit user decision. Автоматичний retry має bounded attempts/backoff, retryable conditions і correlation evidence.

Classify. No response, 408/429, transient 5xx чи deterministic 4xx?
Check semantics. Safe/idempotent method або application-level deduplication?
Observe state. Чи створено booking/payment до retry?
Retry controlled. Same key, bounded attempt, recorded delay.
Assert. One intended effect, traceable attempts, clear user result.

Заповніть `method-status-matrix.csv` і `retry-idempotency.csv` без виконання destructive calls до чужих систем.

Офіційні джерела

Практична перевірка · урок 27 з 32

Закріпіть матеріал уроку

Три сценарні питання. Для зарахування уроку потрібно дати щонайменше дві правильні відповіді.

1. Що означає safe method?
2. Що означає idempotent method?
3. Які стандартні methods safe?