Модуль 7 · Урок 27
Methods, status codes, redirects і retry
Method задає request semantics, status описує результат спроби. QA перевіряє не «green 200», а intended effect, representation, headers, state transition і безпеку retry.
Method — контракт наміру
GET і HEAD є safe: client не просить змінити server state. PUT, DELETE і safe methods визначені як idempotent: кілька однакових intended requests мають той самий intended effect, хоча responses/logs можуть різнитися. POST не стає idempotent лише тому, що повтор іноді «працює».
| Method | Ключова перевірка |
|---|---|
| GET / HEAD | No requested mutation; HEAD має headers як GET без response content. |
| POST | Created/processed outcome, duplicate protection і retry contract. |
| PUT | Target replacement/create semantics, full state та repeat effect. |
| DELETE | Intended removal/unavailability, repeat behavior і dependent state. |
Status code читається разом із method
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.
Заповніть `method-status-matrix.csv` і `retry-idempotency.csv` без виконання destructive calls до чужих систем.
Офіційні джерела
Закріпіть матеріал уроку
Три сценарні питання. Для зарахування уроку потрібно дати щонайменше дві правильні відповіді.