Middle
138
questionbank
Какие существуют принципы REST?
Answer from AI
sobes.tech AI
Существуют следующие принципы REST:
- Клиент-серверная архитектура (Client-Server): Разделение обязанностей между клиентом (потребителем сервиса) и сервером (поставщиком сервиса). Это способствует переносимости клиентского кода и масштабируемости сервера.
- Отсутствие состояния (Stateless): Каждый запрос от клиента к серверу должен содержать всю информацию, необходимую серверу для выполнения этого запроса. Сервер не хранит клиентское состояние между запросами.
- Кэширование (Cacheable): Сервер может явно указывать, могут ли данные быть кэшированы клиентским или промежуточным слоем. Это улучшает производительность и масштабируемость.
- Единообразный интерфейс (Uniform Interface): Самый важный принцип, включающий четыре подраздела:
- Идентификация ресурсов (Identification of resources): Ресурсы идентифицируются уникальными URI (Uniform Resource Identifiers).
- Манипулирование ресурсами через представления (Manipulation of resources through representations): Клиент взаимодействует с ресурсами, получая их представления (например, в формате JSON или XML) и отправляя новые представления для изменения состояния ресурса.
- Самоописывающие сообщения (Self-descriptive messages): Каждое сообщение содержит достаточно информации для того, чтобы получатель понял, как его обработать. Используются стандартные HTTP-заголовки.
- Hypermedia as the Engine of Application State (HATEOAS): Клиент должен находить информацию о доступных действиях и возможных переходах между состояниями приложения из гипермедийных ссылок, встроенных в представления ресурсов.
- Многоуровневая система (Layered System): Система может быть организована с использованием промежуточных слоев (например, прокси, кэши, шлюзы), через которые проходят запросы и ответы. Клиент не знает, взаимодействует ли он напрямую с конечным сервером или через промежуточные слои.
- Код по запросу (Code on Demand - опциональный): Сервер может временно расширять функциональность клиента, передавая исполняемый код (например, JavaScript). Этот принцип необязательный для соответствия REST.