Основные принципы REST API
REST (Representational State Transfer) — архитектурный стиль взаимодействия клиент-серверных приложений через HTTP-протокол. Он был предложен Роем Филдингом в его докторской диссертации в 2000 году.
Филдинг выделил шесть ключевых принципов или ограничений, которые определяют архитектуру REST:
Ограничения REST API
- Клиент-сервер: разделение обязанностей между клиентом и сервером позволяет масштабировать систему и упрощает разработку.
- Отсутствие состояния: каждый запрос от клиента должен содержать всю необходимую информацию для обработки запроса сервером; сервер не хранит состояние сессии.
- Кэшируемость: ответы сервера могут быть кэшированы для повышения производительности.
- Единообразие интерфейса: использование стандартных методов HTTP (
GET,POST,PUT,DELETE) и понятной структуры URL. - Слоистая система: архитектура должна поддерживать промежуточные слои (прокси-сервера, балансировщики нагрузки).
- Код по запросу (опционально): возможность динамической загрузки исполняемого кода.
Почему большинство API нарушают эти ограничения?
На практике многие разработчики создают так называемые "JSON API", которые формально используют HTTP-методы и возвращают данные в формате JSON, но игнорируют некоторые важные аспекты REST:
- Часто нарушается принцип отсутствия состояния, когда сервер сохраняет сессионные данные о пользователе.
- Не всегда соблюдается единообразие интерфейса, например, используются нестандартные методы или сложные пути запросов.
- Кэширование ответов часто реализуется неправильно или вообще отсутствует.
Таким образом, хотя такие API называют RESTful, они редко полностью следуют всем ограничениям REST.