REST API: как и для чего использовать этот метод? Часть 1

В век интеграций обмен данными между системами очень важен. Для совместной работы программные приложения используют интерфейсы прикладного программирования или API. API-интерфейсы помогают отправлять данные туда и обратно. 

Ваш сайт электронной коммерции может взаимодействовать с платежным ПО, ПО для доставки и любыми другими необходимыми интеграциями через соответствующие API.

Существует множество подходов к созданию API, но если вы заинтересованы во внедрении программной интеграции в свой продукт, вам следует знать один особый метод: REST API. В этой статье мы расскажем об этом методе более подробно.  

Что такое REST API?

Прежде чем рассмотреть понятие REST API, давайте определимся с некоторыми терминами: 

  • Клиент — это человек или программа, которые используют API. Клиент делает запрос к API, чтобы получить информацию или изменить что-либо в приложении. Ваш веб-браузер — это клиент, он взаимодействует с API разных веб-сайтов, чтобы получать от них содержимое страниц. Запрошенная информация отправляется обратно в ваш браузер и отображается на экране.
  • Ресурс — это любая информация, которую API может предоставить клиенту. Например, ресурс в API Facebook может быть пользователем, страницей, фотографией или публикацией. У каждого ресурса уникальное имя — идентификатор ресурса.
  • Сервер используется приложением, которое получает запросы клиентов и содержит ресурсы, которые нужны клиенту. У сервера есть API для взаимодействия с клиентами без прямого доступа к содержимому.

REST API — это способ взаимодействия сайтов и веб-приложений с сервером. Термин состоит из двух аббревиатур: API (Application Programming Interface) — это код, который позволяет двум приложениям обмениваться данными с сервера, REST (Representational State Transfer) — это способ создания API с помощью протокола HTTP. 

REST означает передачу репрезентативного состояния. То есть когда клиент запрашивает ресурс с помощью REST API, сервер возвращает текущее состояние ресурса в стандартном виде.

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

Пример: предположим, что мы хотим создать программу, которая интегрируется с YouTube. Наша программа (клиент) может запрашивать у REST API YouTube информацию о конкретном видео (ресурсе). 

API YouTube ответит на наш запрос состоянием ресурса, которое включает такие атрибуты, как название видео, дата публикации, количество просмотров и ссылка на видео. Все это будет упаковано в формат, который наша программа может быстро проанализировать и использовать. Наша программа также может размещать видео (т. е. добавлять новый ресурс) на наш личный канал YouTube через API.

Теперь, когда вы знаете о преимуществах REST API, давайте рассмотрим отличия REST API от других типов API.

Шесть правил REST API

Чтобы в полной мере использовать функциональные возможности REST, API-интерфейсы должны соответствовать шести требованиям. Давайте рассмотрим каждый из них:

1. Разделение клиент-сервер

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

Чтобы упростить связь между клиентом и сервером, API-интерфейсы RESTful делают их удобными и независимыми. Таким образом, клиентское ПО может расширять свои сборки, не беспокоясь о том, что это повлияет на какие-либо другие серверы, а содержимое сервера может быть изменено без воздействия на клиентов.

2. Единый интерфейс

Все запросы и ответы должны следовать общему протоколу и способу форматирования сообщений. Приложения и серверы написаны на разных языках, которые не очень хорошо работают вместе без посредника. Единый интерфейс — это общий язык, на котором любой клиент может общаться с любым REST API.

Без единой связи между запросами и ответами в программах  был бы полный беспорядок. Небольшие несоответствия могут привести к тому, что информация потеряется, а приложениям придется обновлять свои процессы запросов каждый раз, когда API-интерфейсы обновляют свои. Единый интерфейс исключает эту возможность.

Для большинства REST API общим языком является HTTP. Чтобы использовать HTTP с REST API, клиент отправляет запрос в определенном формате. Например, запрос к API YouTube для видеоданных выглядит так:

GET https://www.googleapis.com/youtube/v3/channels?part=contentDetails

Как и все запросы к REST API, этот запрос содержит две части информации:

GET — это HTTP-метод, он указывает на действие, которое клиент хочет выполнить с ресурсом. Клиент может сделать четыре основных HTTP-запроса:

  • GET: для получения ресурса.
  • POST: для создания нового ресурса.
  • PUT: для редактирования или обновления существующего ресурса.
  • DELETE: для удаления ресурса.

https://… — это URL-адрес, который содержит универсальный идентификатор ресурса или URI, который указывает целевой ресурс.

В этом случае URL-адрес называется конечной точкой, поскольку это место, где API фактически взаимодействует с клиентом.

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

На этой странице документации API YouTube показан формат видеоресурса в формате JSON. 

3. Многоуровневая система

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

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


Источник: hubspot.com 

Условия передачи информации

Я даю согласие OOO «ЭсБилдер» (далее «BINN») на обработку моих персональных данных в соответствии со статьями 6, 9, 10, 18 Федерального закона от 27 июля 2006 года № 152-ФЗ «О персональных данных», указанных в онлайн-форме и/или предоставленных мною с целью:

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

Настоящее согласие применяется в отношении обработки следующих данных: имя, номер телефона, адрес электронной почты (E-mail).

Настоящее согласие предоставляется сроком на пять лет. По истечении указанного срока действие согласия считается продленным на каждые следующие пять лет при отсутствии сведений о его отзыве.

Согласие может быть отозвано мною в любой момент путем направления в BINN подписанного мною письменного заявления.