Какие принципы построения REST API существуют?
Что проверяют
Умеете ли вы превратить принципы REST в проверки. Тестировщику мало перечислить методы: нужно понимать, какое поведение API из них следует и где его чаще всего ломают. Следом обычно просят накидать тест-кейсы на конкретный эндпоинт, например POST /orders.
Как отвечать
Назовите принципы и к каждому сразу привяжите проверку:
- ресурсы и URI:
/usersдля коллекции,/users/42для элемента. Несуществующий id даёт404, id в неверном формате даёт400или422, но не500; - семантика методов:
GETничего не меняет,PUTзаменяет ресурс целиком,PATCHменяет часть полей. Неподдерживаемый метод должен вернуть405, неверныйContent-Typeтела даёт415; - идемпотентность: повторите
PUTилиDELETEи убедитесь, что состояние на сервере то же, что после первого вызова. ПовторPOSTсоздаёт дубль, если API не принимает ключ идемпотентности, и для заказов это готовый баг; - отсутствие состояния: каждый запрос самодостаточен. Без токена приходит
401, с токеном без прав403, и эти коды не путаются; - кеширование: заголовки
Cache-ControlиETag, условный запрос сIf-None-Matchвозвращает304; - единый формат: ответы и ошибки соответствуют схеме,
201приходит с заголовкомLocation.
Инструменты называйте те, с которыми работали: Postman или Bruno для ручных проверок, REST Assured или pytest с requests для автотестов, валидация ответов по спецификации OpenAPI. Подчеркните, что проверяете не только статус, но и тело, заголовки и итоговое состояние данных, например повторным GET после изменения.
Где спотыкаются
Проверяют только код ответа. Тогда 200 с ошибкой в теле или без обязательных полей проходит как успех.
Считают отсутствие HATEOAS багом. Большинство реальных API до этого уровня не доходят, и такой дефект означает спор с архитектурным решением, а не найденную ошибку.
Забывают про негативные сценарии: пустое тело, лишние поля, огромные значения, неверные типы. Именно на них API чаще всего отвечает 500.