REST (Representational State Transfer) - это архитектурный стиль для создания распределенных систем, в частности, веб-сервисов. Он основан на следующих принципах:
- Клиент-сервер: Разделение задач между клиентом и сервером повышает переносимость клиентского кода и масштабируемость сервера.
- Отсутствие состояния (Stateless): Каждый запрос от клиента к серверу должен содержать всю информацию, необходимую серверу для его обработки. Сервер не хранит состояние клиента между запросами.
- Кэшируемость: Клиенты или промежуточные узлы могут кэшировать ответы для улучшения производительности и масштабируемости.
- Многоуровневая система (Layered System): Клиент может взаимодействовать с сервером, не зная, является ли это напрямую запрошенным сервером или промежуточным звеном (прокси, шлюз и т.д.).
- Единообразный интерфейс (Uniform Interface): Это ключевой принцип REST, который упрощает общую архитектуру и делает взаимодействие более предсказуемым. Он включает:
- Идентификация ресурсов (Identification of resources): Каждый ресурс уникально идентифицируется (обычно с помощью URI).
- Манипулирование ресурсами через представления (Manipulation of resources through representations): Клиент взаимодействует с ресурсом путем обмена его представлениями (например, в форматах JSON, XML).
- Самоописывающиеся сообщения (Self-descriptive messages): Сообщение от сервера должно содержать достаточно информации, чтобы клиент мог понять, как его обрабатывать (например, с помощью заголовков HTTP).
- HATEOAS (Hypermedia as the Engine of Application State): Сервер включает в свои ответы ссылки на другие связанные ресурсы, направляя клиента по возможным путям взаимодействия.
Часто RESTful API реализуются с использованием протокола HTTP и его методов (GET, POST, PUT, DELETE) для выполнения операций над ресурсами.