Что такое REST (от англ. REpresentational State Transfer — «передача состояния представления»)

Что такое REST (от англ. REpresentational State Transfer — «передача состояния представления»)

Проще говоря, REST — это набор правил о том, как клиент (например, веб-браузер или мобильное приложение) и сервер должны общаться друг с другом через интернет.

Ключевые принципы REST (6 ограничений)

1. Единообразие интерфейса (Uniform Interface): Это самый важный принцип. Он означает, что взаимодействие между клиентом и сервером должно быть стандартным и предсказуемым.

o Ресурсы: Все данные и функциональность представляются как ресурсы (например, пользователь, товар, заказ). Каждый ресурс имеет уникальный идентификатор (URI).

o Манипуляция ресурсами через представления: Клиент работает с ресурсом через его "представление" (например, в формате JSON или XML). Если у клиента есть нужные права, он может изменить или удалить ресурс на сервере, отредактировав его представление.

o Самодостаточые сообщения: Каждое сообщение от клиента к серверу должно содержать всю информацию, необходимую для его обработки. Сервер не должен хранить состояние сессии клиента (см. Stateless ниже).

o HATEOAS (Hypermedia as the Engine of Application State): Ответы от сервера должны содержать гиперссылки, позволяющие клиенту динамически обнаруживать доступные действия. Например, ответ о заказе может содержать ссылки "cancel_order": "/orders/123/cancel".

2. Отсутствие состояния (Stateless): Каждый запрос от клиента к серверу должен содержать всю необходимую информацию для его понимания и выполнения. Сервер не хранит никаких данных о сессии клиента между запросами. Это делает систему более надежной и легко масштабируемой.

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

4. Клиент-серверная архитектура (Client-Server): Четкое разделение обязанностей. Клиент отвечает за пользовательский интерфейс и взаимодействие с пользователем, а сервер — за хранение данных, бизнес-логику и управление ресурсами. Это позволяет им развиваться независимо.

5. Многоуровневая система (Layered System): Архитектура может состоять из нескольких уровней (например, сервер приложений, сервер базы данных, балансировщик нагрузки). Клиент не знает и не должен знать, на каком именно уровне обрабатывается его запрос.

6. Код по требованию (Code on Demand, опционально): Сервер может временно расширять функциональность клиента, передавая ему исполняемый код (например, JavaScript). Это единственное необязательное ограничение.

REST на практике: RESTful API

Веб-сервис, который следует принципам REST, называется RESTful API.

Самый распространенный пример — это взаимодействие с сервером с помощью HTTP-методов и URL-адресов.

·        Ресурс: Пользователь

·        Уникальный идентификатор (URI): https://api.example.com/users/123

Действие

HTTP-метод

URL

Что делает?

Получить пользователя

GET

/users/123

Чтение данных. Безопасный метод.

Создать нового пользователя

POST

/users

Создание нового ресурса.

Изменить данные пользователя

PUT или PATCH

/users/123

Полное обновление (PUT) или частичное (PATCH).

Удалить пользователя

DELETE

/users/123

Удаление ресурса.


Пример запроса и ответа:

·        Запрос (клиент -> сервер):

http

GET /users/123 HTTP/1.1

Host: api.example.com

Authorization: Bearer <token>

·        Ответ (сервер -> клиент):

http

HTTP/1.1 200 OK

Content-Type: application/json

{

  "id": 123,

  "name": "Иван Иванов",

  "email": "ivan@example.com",

  "links": [

{

   "rel": "self",

   "href": "/users/123"

},

{

   "rel": "orders",

   "href": "/users/123/orders"

}

  ]

}

Простая аналогия

Представьте, что REST — это работа с меню в ресторане:

·        Меню (API документация) содержит список всех доступных блюд (ресурсов).

·        Вы делаете заказ (HTTP-запрос), называя конкретное блюдо по его названию (URI) и используя определенный глагол ("Я хочу получить...", "Я хочу заказать...").

·        Официант (клиент) передает ваш заказ на кухню (сервер).

·        Кухня (сервер) готовит блюдо и передает его официанту. Кухня не помнит, что вы заказывали в прошлый раз (stateless).

·        Официант приносит вам готовое блюдо (ответ с данными в формате JSON/XML).

Итог

REST — это популярный, простой и эффективный архитектурный стиль, который использует стандартные возможности протокола HTTP для создания масштабируемых и надежных веб-сервисов (RESTful API). Подавляющее большинство современных публичных API (Google, Twitter, GitHub и т.д.) являются RESTful.


   18.11.2025 19:35:12
Автор статьи:
Скачков Павел Вадимович ©
ЕЩЕ ПО ТЕМЕ