(продолжение предыдущего поста)
1. Обзор
→ REST (Representational State Transfer, передача состояния представления) — это архитектурный стиль проектирования сетевых приложений.
→ Он использует методы HTTP для выполнения операций над ресурсами, которые представлены URL‑адресами.
→ REST API не сохраняют состояние, поддерживают кэширование и ориентированы на ресурсы, а не на действия.
2. Основные принципы
→ Архитектура «клиент-сервер»
Клиент отвечает за пользовательский интерфейс, а сервер управляет данными и логикой.
Такое разделение обеспечивает масштабируемость и независимую разработку.
→ Отсутствие сохранения состояния (statelessness)
Каждый запрос содержит всю необходимую информацию.
Сервер не хранит данные сессии между запросами.
Это упрощает масштабирование и повышает надёжность.
→ Поддержка кэширования
Ответы должны указывать, можно ли их кэшировать.
Правильное кэширование снижает нагрузку на сервер и повышает производительность.
→ Единый интерфейс
REST обеспечивает последовательный и предсказуемый способ доступа к ресурсам.
Следует использовать понятные URI, стандартные HTTP‑методы и единообразные форматы данных.
→ Многоуровневая система
REST допускает многоуровневую архитектуру, включающую прокси‑серверы, межсетевые экраны и балансировщики нагрузки.
Каждый уровень работает независимо и взаимодействует только с ближайшим соседом.
→ Код по требованию (опционально)
Сервер может отправлять клиенту исполняемый код (например, JavaScript), если это необходимо.
3. Основные компоненты
→ Ресурсы
В REST всё является ресурсом — пользователи, публикации, товары и т. д.
Каждый ресурс однозначно идентифицируется с помощью URI.
→ URI (Uniform Resource Identifiers, унифицированные идентификаторы ресурса)
Пример структуры:
GET /users GET /users/{id} POST /users PUT /users/{id} DELETE /users/{id}→ Методы HTTP
GET → Получить ресурс POST → Создать новый ресурс PUT → Обновить существующий ресурс DELETE → Удалить ресурс→ Представление
Ресурсы представляются в форматах, таких как JSON или XML.
Клиенты взаимодействуют с этими представлениями для обмена данными.
4. Преимущества
→ Высокая масштабируемость и производительность
→ Упрощённое взаимодействие между клиентом и сервером
→ Простая интеграция с различными платформами
→ Лучшая поддерживаемость и гибкость
→ Меньший объём данных по сравнению с сложными протоколами, такими как SOAP