• Информация на сайте предоставляется «как есть», может содержать неточности и не является консультацией или офертой.
  • Перед использованием проконсультируйтесь со специалистом.

Используя сайт, вы подтверждаете, что вы изучили и согласны с документами Политика конфиденциальности и обработки персональных данныхи Пользовательское соглашение.

Сайт использует cookies для работы и сбора аналитики. Вы можете принять или настроить их, а также полностью отключить в настройках браузера.

Настройки cookies
Необходимые для работы веб-сайта

Используются для входа, навигации и защиты (например: sessionid, csrftoken). Без них сайт может работать с перебоями.

Помогают улучшить сайт, собирая статистику посещений (например, через Яндекс Метрику).

Используются для показа персонализированной рекламы и ретаргетинга в рекламных сетях.

Настройки интерфейса

Декоративный эффект свечения при клике по странице.

DEV -
PROGRAM.RU
Контакты

Что такое REST API: принципы работы и особенности

Что такое REST API и как он работает? Разбираем архитектурные принципы REST, особенности взаимодействия клиента и сервера, преимущества и ограничения.

что такое REST API

REST API широко используется в современной веб-разработке и является важной частью взаимодействия между сервисами.

С ним сталкиваются при разработке веб сайтов, мобильных приложений и интеграции сторонних платформ.

В этой статье разберём, что означает REST API, в каких задачах он применяется, какие особенности имеет этот подход и почему он получил широкое распространение в разработке.

Что такое REST API

REST API это подтип Web API, спроектированный с опорой на архитектурный стиль REST.

Что такое API мы прежде рассмотрели в отдельной статье.

REST (Representational State Transfer) это архитектурный стиль проектирования распределённых систем, предложенный Роем Филдингом (Roy Fielding) в 2000 году, который ставит правила, как должны взаимодействовать компоненты системы.

REST не является протоколом, языком программирования или конкретной технологией.

Основная идея REST заключается в том, что данные и объекты системы представляются в виде ресурсов, а клиент (обращающаяся программа или разработчик) взаимодействует с ними через стандартизированный интерфейс.

Что такое ресурс в REST API

Ресурс это сущность или объект, к которому API предоставляет доступ.

Например, ресурсом в REST API может быть:

  • пользователь

  • товар

  • заказ

  • категория товаров

  • статья

  • комментарий

Каждый ресурс имеет уникальный идентификатор, обычно представленный в виде URI (Uniform Resource Identifier) (простыми словами адрес).

Примеры адресов ресурсов:

  • /users получить всех пользователей списком

  • /users/15 получить конкретного пользователя с идентификатором 15

  • /products получить все заказы списком

  • /orders/100 получить конкретный заказ с идентификатором 100

Основные принципы REST

REST определяет шесть основных архитектурных принципов.

Клиент-серверная архитектура (Client-Server)

Отсутствие состояния (Stateless)

Каждый запрос клиента должен содержать всю информацию, необходимую серверу для его обработки.

Сервер не должен полагаться на сохранённый контекст предыдущих запросов конкретного клиента.

Например, если для получения информации о пользователе требуется авторизация, клиент передаёт токен доступа в каждом запросе.

Это позволяет серверу обрабатывать запросы независимо друг от друга и упрощает масштабирование системы.

Stateless не означает отсутствие базы данных или сохранённых пользовательских данных.

Речь идёт только о состоянии взаимодействия между клиентом и сервером.

Кэширование (Cacheable)

Ответы сервера должны явно определять, можно ли их кэшировать и на какой срок.

Кэширование позволяет использовать повторно ранее полученные данные, уменьшая количество запросов к серверу тем самым снижая нагрузку.

Например, список категорий товаров может кэшироваться, так как меняется редко.

Для управления кэшированием в HTTP используются заголовки, такие как:

  • Cache-Control

  • ETag

  • Expires

  • Last-Modified

Единый интерфейс (Uniform Interface)

Взаимодействие между клиентом и сервером должно происходить через единый стандартизированный интерфейс.

Это один из ключевых принципов REST. Он включает четыре ограничения:

  • Идентификация ресурсов

    Каждый ресурс имеет свой идентификатор.

  • Манипулирование ресурсами через представления

    Клиент получает представление ресурса и использует его для взаимодействия с ним.

  • Самоописываемые сообщения

    Содержат достаточно информации для понимания способа их обработки.

  • HATEOAS

    Клиент может находить доступные действия через ссылки, предоставляемые сервером.

Многоуровневая система (Layered System)

Архитектура может состоять из нескольких уровней, каждый из которых выполняет определённые функции.

Например, между клиентом и основным сервером могут находиться:

  • балансировщик нагрузки

  • API Gateway (единая точка входа)

  • прокси-сервер

  • система кэширования

  • сервис аутентификации

Клиенту не требуется знать, с каким именно компонентом системы он взаимодействует, что позволяет строить масштабируемые и распределённые приложения.

Код по требованию (Code on Demand)

REST допускает возможность передачи исполняемого кода от сервера клиенту.

Например, сервер может передать JavaScript, который будет выполнен в браузере.

Это необязательное архитектурное ограничение REST.

Как работает REST API

REST API обычно работает поверх протокола HTTP.

Клиент отправляет HTTP-запрос к определённому ресурсу, а сервер обрабатывает запрос и возвращает HTTP-ответ.

Рассмотрим пример получения информации о пользователе.

Клиент отправляет запрос:

GET /users/15 HTTP/1.1
Host: api.example.com
Accept: application/json

пример запроса REST API

Сервер возвращает ответ:

HTTP/1.1 200 OK
Content-Type: application/json

{
  "id": 15,
  "name": "Иван",
  "email": "ivan@example.com"
}

пример ответа HTTP для REST API

Мы видим в этом примере:

  • GET это HTTP-метод, указывающий на потребность получить данные

  • /users/15 это адрес ресурса

  • 200 OK это код состояния HTTP, означающий успешную обработку запроса

  • Content-Type это заголовок, определяющий формат возвращаемых данных

  • JSON это формат получаемых данных

Таким образом, REST определяет архитектурные принципы взаимодействия, а HTTP предоставляет механизм передачи запросов и ответов.

REST теоретически может быть реализован и поверх другого протокола.

Преимущества REST API

Основные преимущества REST API:

  • Простота взаимодействия

    Используются распространённые механизмы HTTP.

  • Независимость клиента и сервера

    Клиент и сервер могут разрабатываться и изменяться независимо друг от друга.

  • Масштабируемость

    Архитектурные принципы позволяют распределять нагрузку между компонентами системы.

  • Кэширование

    Повторное использование ответов позволяет снизить нагрузку на сервер.

  • Универсальность

    REST API может использоваться веб-приложениями, мобильными приложениями и другими системами.

  • Поддержка различных форматов данных

    Наиболее распространён JSON, но могут использоваться и другие форматы.

Ограничения REST API

Несмотря на популярность, REST API имеет и определённые ограничения:

  • Количество запросов

    Для получения связанных данных клиенту иногда приходится отправлять несколько запросов.

  • Избыточность данных

    Сервер может возвращать больше информации, чем требуется клиенту.

  • Зависимость от структуры ресурсов

    Изменение структуры API может потребовать изменений на стороне клиента.

  • Отсутствие состояния взаимодействия

    Сервер не хранит контекст предыдущих запросов клиента, поэтому необходимая информация должна передаваться в каждом запросе.

  • Необходимость проектирования API

    Для создания удобного интерфейса важно правильно определить ресурсы, URI и способы взаимодействия с ними.

REST API и RESTful API

Термины REST API и RESTful API часто используются как синонимы.

Однако между ними есть небольшое отличие:

  • REST API это API, которое использует или ориентируется на архитектурный стиль REST.

  • RESTful API это API, которое соответствует архитектурным ограничениям REST.

На практике термин REST API часто используется для обозначения HTTP API, построенного вокруг ресурсов и стандартных HTTP-методов.

При этом не каждое HTTP API является REST API.

Например, API, в котором все операции выполняются через один endpoint (адрес) с передачей названия действия в теле POST-запроса, не обязательно соответствует принципам REST.

Если у вас остались вопросы по поводу REST API, можете обратиться за консультацией к программисту.

Вам может быть интересно

Поделиться
Ничего не найдено
Найдите нужную страницу

Статьи, инструменты и помощь