intermediate
HTTP methods и status codes
Применяйте method safety/idempotency, success codes, redirects, validation errors, auth failures, conflicts, rate limits и server errors.
Методы несут семантику шире маршрутизации. Safe не меняют состояние сервера (GET, HEAD, OPTIONS). Idempotent дают тот же эффект при повторе (PUT, DELETE, GET). POST не safe и не idempotent — повторы требуют осторожности.
| Класс | Смысл | Примеры | |-------|-------|---------| | 2xx | Успех | 200 OK, 201 Created, 204 No Content | | 3xx | Перенаправление | 301 постоянный, 302/307 временный, 304 Not Modified | | 4xx | Ошибка клиента | 400 validation, 401 unauthenticated, 403 forbidden, 404, 409 conflict, 422, 429 rate limit | | 5xx | Ошибка сервера | 500 unexpected, 502 bad gateway, 503 unavailable, 504 timeout |
if (!user) return res.status(401).json({ error: 'unauthenticated' });
if (!allowed) return res.status(403).json({ error: 'forbidden' });
На интервью: коды, помогающие клиенту правильно ретраить — 429 с Retry-After, 503 при перегрузке, 409 при конфликте версий; не отдавайте 200 с телом ошибки в API.
Типовые ошибки: путаница 401 и 403; 404 чтобы скрыть существование; 500 на validation; дубликаты от неидемпотентных POST без idempotency keys.
Компромисс — между простотой, производительностью, безопасностью и эксплуатацией: назовите, что оптимизировали и какую цену приняли.
Чеклист:
- Safety и idempotency по методам.
- Точные 4xx под доменные ошибки.
- 5xx только для неожиданных сбоев сервера.
- Политика retry по классам статусов.