Sobes.tech
Junior
125
questionbank

Что такое REST?

Answer from AI

sobes.tech AI

REST (Representational State Transfer) — это архитектурный стиль для построения распределенных систем, в основном используемый при проектировании веб-сервисов. Он основан на наборе принципов и ограничений, которые определяют, как веб-ресурсы взаимодействуют друг с другом.

Ключевые принципы REST:

  • Клиент-сервер: Четкое разделение обязанностей между клиентом и сервером.
  • Stateless (отсутствие состояния): Сервер не хранит информацию о состоянии клиента между запросами. Каждый запрос содержит всю необходимую информацию для обработки.
  • Cacheable (кэшируемость): Клиенты могут кэшировать ответы сервера для повышения производительности. Сервер явно указывает, можно ли кэшировать ответ.
  • Layered System (слоёная система): Клиент может взаимодействовать с промежуточным слоем (например, прокси, балансировщик нагрузки), не зная об этом.
  • Code on Demand (код по требованию) - опционально: Сервер может передавать исполняемый код клиенту (например, JavaScript), расширяя функциональность клиента.
  • Uniform Interface (единообразный интерфейс): Наиболее важный принцип, который включает в себя следующие ограничения:
    • Идентификация ресурсов (URI).
    • Манипуляции ресурсами через представления (обмен данными в определенном формате, например JSON, XML).
    • Самоописываемые сообщения (сообщения содержат всю необходимую информацию для их понимания).
    • HATEOAS (Hypermedia as the Engine of Application State): Клиент переходит между состояниями приложения, используя гиперссылки, содержащиеся в ответах сервера.

RESTful API — это реализация REST-стиля для веб-сервисов, использующая стандартные HTTP-методы (GET, POST, PUT, DELETE) для работы с ресурсами.

// Пример использования HTTP-методов в RESTful API
// Получить ресурс
// GET /api/products/1

// Создать ресурс
// POST /api/products
// Body: { "name": "New Product", "price": 10.50 }

// Обновить ресурс
// PUT /api/products/1
// Body: { "name": "Updated Product", "price": 11.00 }

// Удалить ресурс
// DELETE /api/products/1