Точные status codes и правильный метод — часть API-контракта.
Разбор
- Specific status лучше generic.
422 — «JSON распарсился, но values неверны» — actionable, чем blanket 400. Но не выдумывать codes — зарегистрированные, иначе clients/proxies ломаются.
PUT vs POST vs PATCH. PUT — replace whole resource (idempotent). PATCH — partial (idempotent не гарантирован). POST — create/append. PUT для create с client-known ID — free retry-safety.
- Не прятать actions в
GET. GET /deleteUser?id=5 — cacheable, prefetchable, в URL logs — security и correctness disaster.
Итог
422 vs 400, семантика PUT/PATCH/POST, GET только для safe read.