В этой статье подробно рассмотрим REST API — самый распространенный тип API. Для начала разберемся, что такое API.
API (Application Programming Interface, или программный интерфейс приложения) — это набор протоколов, с помощью которых клиентская и серверная часть приложения взаимодействуют друг с другом. API определяет структуру и формат запросов и ответов между программами. Это позволяет им обмениваться данными и выполнять определенные функции.
Рест
API связывает разные системы, позволяя приложениям использовать функциональность сторонних сервисов. API может быть:
– встроен в язык программирования,
– предоставлен сторонним сервисом или программным обеспечением.
Веб-сайты используют API для доступа к своим данным или функциям, а операционные системы для взаимодействия с аппаратной частью компьютера. Например, благодаря API вы можете подключить к сайту авторизацию через соцсети или платежную систему.
Что такое REST API
REST API представляет собой архитектурный стиль API и используется для регламентирования взаимодействия между клиентской и серверной частью ПО. Он основан на принципах REST архитектуры (Representational State Transfer, или передача состояния представления), которые обеспечивают эффективное взаимодействие между клиентами и серверами в распределенной сетевой среде.
REST API использует уникальные идентификаторы ресурсов (URI) и HTTP-методы для взаимодействия с ресурсами. Обмен данными обычно происходит в формате JSON или XML.
API, который следует принципам REST, называется RESTful.
По сравнению с другими API, RESTful API считаются более гибкими, масштабируемыми и легкими для понимания и использования.
Основные принципы REST API
Чтобы распределенная система считалась сконструированной по REST архитектуре, при написании программного кода необходимо следовать правилам:
-
1.
Отделение клиента от сервера (Client-Server). В RESTful запросах код запроса остается у клиента, а код для доступа к данным на сервере. Это упрощает взаимодействие с API и облегчает перенос клиентской части на другие платформы.
-
2.
Единый интерфейс (Uniform Interface). Все данные запрашиваются с одного URL при помощи стандартных протоколов, чаще всего HTTP.
-
3.
Кэшируемость (Cacheable). В запросе к серверу должна содержаться информация о кэшировании данных в буфере. Это позволяет клиенту запрашивать данные из буфера, если указано, что данные должны кэшироваться.
-
4.
Отсутствие состояния (Stateless). Каждый запрос от клиента к серверу должен содержать всю необходимую информацию для обработки этого запроса. Сервер не должен сохранять ее в перерывах между запросами.
-
5.
«Начало от нуля» (Starting with the Null Style). Доступ клиента ограничивается одной точкой входа. Дальнейшую обработку выполняет сервер.
-
6.
Многоуровневость системы (Layered System). Серверы могут располагаться на разных уровнях, однако взаимодействие происходит только между соседними устройствами. Это уменьшает нагрузку на конечные серверы.
-
7.
Предоставление кода по запросу (Code on Demand). Сервер может отправлять код клиенту. Этот принцип необязателен и используется только в некоторых реализациях REST.
Как работает REST API
Данные между клиентом и сервером передаются с помощью HTTP-сообщений. Они бывают двух видов:
Запросы (HTTP Requests) — сообщения, которые отправляются клиентами на сервер. В них указывается нужный метод и URL ресурса, с которым они хотят взаимодействовать.
Ответы (HTTP Responses) — сообщения, которые сервер отправляет в ответ на клиентский запрос.
Структура запроса
Запрос от клиента к серверу состоит из следующих элементов:
-
1.
HTTP Method (Метод HTTP). Определяет тип операции, которую клиент хочет выполнить над ресурсом на сервере.
-
2.
URL (Uniform Resource Locator) или URI (Uniform Resource Identifier). Идентифицируют ресурс на сервере для взаимодействия. URL включает в себя протокол (например, «http://» или «https://»), доменное имя сервера и путь к ресурсу. URI может быть составлен из пути к ресурсу и параметров запроса. Например, в запросе на получение данных о пользователе, /users/123 является URI ресурса, где 123 — идентификатор конкретного пользователя.
-
3.
Headers (Заголовки). Содержат дополнительную информацию о запросе: тип контента, аутентификационные данные, параметры запроса или язык. Например, заголовок «Content-Type» определяет тип передаваемых данных.
-
4.
Request Body (Тело запроса). Содержит данные, которые отправляются на сервер вместе с запросом. Тело запроса используется в методах POST и PUT.
Структура ответа
После выполнения запроса сервер возвращает ответ клиенту. Он состоит из трех основных элементов:
-
1.
Status Code (Код состояния). Это цифровой код, который указывает на результат выполнения запроса. Эти коды состоят из трех цифр и делятся на следующие категории:
1xx — информационные сообщения;
2xx — успешное выполнение запроса;
3xx — редиректы;
4xx — ошибки, связанные с запросом клиента (например, «404 Not Found»);
5xx — ошибки сервера (например, «500 Internal Server Error»).
-
2.
Headers (Заголовки). Содержат дополнительную информацию об ответе. Это помогает клиентскому приложению правильно прочитать и понять ответ.
-
3.
Body (Тело ответа). Содержит данные, которые возвращает сервер в ответ на запрос. Передается в формате JSON, реже в XML или HTML. Может быть пустым.
Какие методы используются в REST API
Для передачи данных между клиентом и сервером REST API использует стандартные HTTP-методы. Эти методы определяются двумя характеристиками: безопасность и идемпотентность.
Если вызов метода не изменяет состояние данных на сервере — этот метод безопасный.
Если при повторном применении операции к объекту возвращается тот же результат, что и при первом — этот метод идемпотентный. Другими словами, выполнение идемпотентной операции не приводит к изменению состояния системы.
REST подход
Часто используемые HTTP-методы:
GET — запрашивает данные с сервера. Метод работает только на чтение, поэтому он безопасен и идемпотентен.
POST — метод для создания новых данных на сервере. Он не идемпотентный, поскольку повторные запросы могут привести к созданию нескольких копий одного и того же ресурса. POST небезопасный метод, так как может модифицировать существующие данные.
PUT — метод для регулярного обновления данных на сервере. PUT обновляет всю запись целиком. Идемпотентен и небезопасен.
DELETE — метод для удаления данных на сервере. Идемпотентен, небезопасен.
Методы, которые используются реже:
PATCH — используется для частичного обновления ресурса на сервере. В отличие от PUT, PATCH применяется только к изменяемым частям ресурса, не затрагивая другие. Не является идемпотентным и безопасным с точки зрения стандарта HTTP.
HEAD — выполняет запрос к серверу для получения метаданных о ресурсе, но без его тела. Например, для проверки доступности ресурса. Безопасный, идемпотентный.
OPTIONS — запрашивает информацию о возможностях сервера или параметрах конкретного ресурса. Безопасный и идемпотентный метод.
TRACE — возвращает полученный запрос обратно клиенту. Может быть использован для диагностики, отладки или тестирования запросов. Безопасный, но не идемпотентный.
Для чего используют REST API
REST API обеспечивает надежную и эффективную интеграцию и может быть использован для:
создания веб-сервисов для взаимодействия с пользователями;
разработки мобильных приложений, которые используют внешние сервисы для получения данных;
интеграции приложений для обмена информацией;
разработки микросервисной архитектуры;
построения распределенных приложений.
Например, социальные сети могут работать с REST API для организации доступа к постам или фотографиям.
REST-подход позволяет сделать сервисы отказоустойчивыми, гибкими и производительными, а при их масштабировании и изменении не возникает больших сложностей.
Преимущества и недостатки REST API
RESTful остается популярным выбором для многих веб-приложений так как применение REST API имеет несколько преимуществ перед другими протоколами и методологиями:
гибкая настройка;
отсутствие записи состояния клиентской части(сервер не хранит данные о состоянии), это снижает нагрузку на сервер;
поддержка популярных языков программирования и фреймворков;
предоставление простого и стандартизированного доступа к ресурсам через Интернет.
К недостаткам рест апи можно отнести отсутствие спецификации и четких методов для управления базами. Поэтому REST API может не подойти для работы со сложными проектами.
Помогла ли вам статья?
Спасибо за оценку. Рады помочь 😊