Что такое REST? Назовите принципы и типичные ошибки проектирования API.
REST — архитектурный стиль, а не протокол. Основные ограничения: клиент-серверная модель, отсутствие состояния между запросами, кешируемость, единообразие интерфейса, слоистость.
Практические правила:
- ресурсы — существительные во множественном числе:
/users,/users/42/orders; - действие выражает метод, а не URL:
DELETE /users/42, а неGET /deleteUser?id=42; - коды состояния используются по назначению;
- версионирование —
/api/v1/...или через заголовок; - пагинация, фильтрация и сортировка — через query-параметры;
- ответ об ошибке в едином формате с машиночитаемым кодом.
Типичные ошибки: глаголы в URL, всегда 200 OK с полем error в теле, возврат всей коллекции без ограничения, раскрытие внутренних идентификаторов и стектрейсов, отсутствие идемпотентности у операций оплаты.
Про альтернативы стоит знать: GraphQL решает проблему недостаточной и избыточной выборки, но усложняет кеширование и требует защиты от дорогих запросов; gRPC быстр и строго типизирован, хорош между сервисами, но неудобен для браузера. REST остаётся выбором по умолчанию для публичных API.
- Что означает stateless и почему это важно для масштабирования?
- Когда GraphQL лучше REST?