Что такое REST и каковы его ключевые принципы?

«Что такое REST и каковы его ключевые принципы?» — вопрос из категории Сети, который задают на 28% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

REST (Representational State Transfer) – это архитектурный стиль для построения распределенных систем, основанный на стандартах и протоколах (в первую очередь, HTTP).

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

  1. Единообразие интерфейса (Uniform Interface):

    • Ресурсы идентифицируются URI (например, /api/books/123).
    • Действия над ресурсами определяются HTTP-методами (GET, POST, PUT, DELETE, PATCH).
    • Самодостаточные сообщения (запрос/ответ содержат всю необходимую информацию).
    • Использование HATEOAS (Hypermedia as the Engine of Application State) – ссылки на связанные ресурсы в ответе.
  2. Отсутствие состояния (Stateless): Каждый запрос от клиента должен содержать всю информацию, необходимую для его обработки. Сервер не хранит состояние сессии клиента.

  3. Кэшируемость (Cacheable): Ответы должны явно указывать, можно ли их кэшировать и как долго.

  4. Клиент-серверная архитектура: Четкое разделение ответственности.

  5. Слоистая система (Layered System): Клиент не знает, взаимодействует ли он с конечным сервером или промежуточным прокси.

Пример корректного REST-запроса и ответа:

  • Запрос: GET /api/users/42 HTTP/1.1
  • Ответ (200 OK):
    {
    "id": 42,
    "name": "Alice",
    "email": "alice@example.com",
    "_links": {
    "self": { "href": "/api/users/42" },
    "orders": { "href": "/api/users/42/orders" }
    }
    }

    REST API обычно используют JSON или XML в качестве формата представления данных.