Какие сервисы можно назвать RESTful
Что проверяют
Понимаете ли вы принципы REST настолько, чтобы находить их нарушения в чужом API. Для тестировщика следом почти всегда идут вопросы про идемпотентность методов и разницу кодов 401 и 403, 400 и 422.
Как отвечать
Коротко дайте определение: RESTful называют сервис, который следует ограничениям стиля REST. Главные из них: у ресурсов свои URI, работа идёт через стандартные методы HTTP, сервер не хранит сессию между запросами, ответы явно помечены как кешируемые или нет. Затем переведите это в то, что вы проверяете:
- методы:
GETничего не меняет,POSTсоздаёт,PUTзаменяет ресурс целиком,PATCHменяет частично,DELETEудаляет. Неподдерживаемый метод на ресурсе даёт405 Method Not Allowed; - идемпотентность: повторный
PUTилиDELETEне меняет состояние сервера сверх первого вызова. ПовторныйPOSTможет создать дубликат, это проверяют отдельно; - коды ответа:
201 Createdс заголовкомLocationпосле создания,204 No Contentпосле удаления,404на несуществующий ресурс,400на битый JSON,422на корректный JSON с невалидными данными, если API так договорился; - авторизация:
401без токена или с просроченным,403при нехватке прав; - кеширование:
Cache-Control,ETagи ответ304 Not Modifiedна запрос сIf-None-Match; - формат: заголовки
Content-TypeиAccept, ответ415на неподдерживаемый тип тела.
Инструменты: Postman или Bruno для ручных проверок, REST Assured или pytest с requests для автотестов, спецификация OpenAPI как источник ожидаемого контракта.
Где спотыкаются
Путают идемпотентность с одинаковым ответом. Второй DELETE вполне может вернуть 404, и метод остаётся идемпотентным: состояние сервера не изменилось.
Не различают 401 и 403. Первый значит «вы не аутентифицированы», второй «вы известны, но доступа нет».
Проверяют только позитивные сценарии и код 200. Большая часть нарушений REST видна на ошибках: неверный метод, чужой ресурс, битое тело, повторная отправка.