Ответ
Основные принципы (ограничения) RESTful архитектуры:
-
Единообразие интерфейса (Uniform Interface):
- Идентификация ресурсов: Каждый ресурс (пользователь, заказ) имеет уникальный URI (например,
/api/users/123). - Манипуляция ресурсами через представления: Клиент взаимодействует с ресурсом через представление (например, JSON), которое сервер отправляет. Изменяя это представление и отправляя его обратно, клиент модифицирует ресурс.
- Самодостаточные сообщения: Каждый запрос содержит всю информацию, необходимую для его обработки (метод, заголовки, тело).
- HATEOAS (Hypermedia as the Engine of Application State): Ответы сервера содержат гиперссылки на возможные следующие действия (например, ссылка на создание нового заказа после получения списка товаров).
- Идентификация ресурсов: Каждый ресурс (пользователь, заказ) имеет уникальный URI (например,
-
Отсутствие состояния (Stateless): Сервер не хранит состояние клиента между запросами. Каждый запрос должен содержать всю необходимую аутентификационную и контекстную информацию (обычно в заголовках или токенах).
-
Кэшируемость (Cacheable): Ответы сервера должны явно указывать, можно ли их кэшировать и как долго (через заголовки
Cache-Control,Expires). Это критично для производительности. -
Клиент-серверная архитектура: Четкое разделение обязанностей. Клиент отвечает за UI и логику взаимодействия с пользователем, сервер — за хранение данных, бизнес-логику и управление ресурсами.
-
Многоуровневая система (Layered System): Архитектура может состоять из нескольких уровней (прокси, балансировщики, шлюзы). Клиент не знает, подключен ли он напрямую к конечному серверу или через промежуточные узлы.
-
Код по требованию (Code on Demand, опционально): Сервер может временно расширять функциональность клиента, передавая исполняемый код (например, JavaScript). На практике используется редко.
С точки зрения тестирования QA-инженер проверяет:
- Корректное использование HTTP-методов (
GETдля получения,POSTдля создания,PUT/PATCHдля обновления,DELETEдля удаления). - Использование соответствующих HTTP-статусов (
200 OK,201 Created,400 Bad Request,404 Not Found,500 Internal Server Error). - Структуру URI (логичность, отсутствие глаголов, использование существительных во множественном числе).
- Формат обмена данными (обычно JSON или XML) и его соответствие контракту (OpenAPI/Swagger).
- Отсутствие состояния (повторный идентичный запрос без сессии должен давать тот же результат).
- Заголовки, отвечающие за кэширование и контроль доступа (
CORS).