Что подразумевает принцип единообразия интерфейса (Uniform Interface) в REST

Ответ

Единообразие интерфейса (Uniform Interface) — одно из шести ключевых архитектурных ограничений REST, которое стандартизирует и упрощает взаимодействие между клиентом и сервером. Оно состоит из четырех составляющих:

  1. Идентификация ресурсов (Identification of resources): Каждый ресурс однозначно идентифицируется с помощью URI (Uniform Resource Identifier). Например, /users/123 — это URI для конкретного пользователя.

  2. Манипуляция ресурсами через представления (Manipulation of resources through representations): Клиент взаимодействует с ресурсом через его представление (например, в формате JSON или XML). Ответ сервера содержит достаточно информации, чтобы клиент мог изменить или удалить ресурс на сервере.

  3. Самодостаточные сообщения (Self-descriptive messages): Каждое сообщение (запрос или ответ) содержит всю необходимую информацию для его обработки. Это включает HTTP-метод (GET, POST), заголовки (например, Content-Type) и тело сообщения.

  4. Гипермедиа как двигатель состояния приложения (HATEOAS): Ответы сервера содержат ссылки (гипермедиа), которые позволяют клиенту динамически обнаруживать доступные действия и переходить между состояниями приложения. Это снижает связанность клиента и сервера.

Пример ответа с HATEOAS:

// GET /users/123
{
  "id": 123,
  "name": "Alex",
  "links": [
    {
      "rel": "self",
      "href": "/users/123",
      "method": "GET"
    },
    {
      "rel": "edit",
      "href": "/users/123",
      "method": "PUT"
    },
    {
      "rel": "orders",
      "href": "/users/123/orders",
      "method": "GET"
    }
  ]
}

Соблюдение этого принципа позволяет клиенту и серверу развиваться независимо друг от друга.