Найти тему
DEBAGanov

Java 1321. Что такое REST API?

Оглавление

1321. Что такое REST API?

REST API (Representational State Transfer Application Programming Interface) - это архитектурный стиль, который определяет набор ограничений и принципов для создания веб-сервисов. REST API позволяет взаимодействовать с удаленными серверами и обмениваться данными посредством стандартных HTTP-запросов, таких как GET, POST, PUT и DELETE.

REST API основан на следующих принципах:

1. Ресурсы (Resources): В REST API данные представляются в виде ресурсов, которые могут быть доступны по уникальным идентификаторам (URL). Ресурсы могут быть, например, объектами, коллекциями объектов или сервисами.

2. Универсальный интерфейс (Uniform Interface): REST API использует универсальный набор методов HTTP, таких как GET, POST, PUT и DELETE, для взаимодействия с ресурсами. Каждый метод имеет свою семантику и предназначен для выполнения определенных операций над ресурсами.

3. Без состояния (Stateless): Каждый запрос к REST API должен содержать все необходимые данные для его обработки. Сервер не хранит информацию о предыдущих запросах клиента, что делает REST API масштабируемым и независимым от состояния.

4. Клиент-серверная архитектура (Client-Server): REST API основан на разделении клиента и сервера. Клиент отправляет запросы на сервер, а сервер обрабатывает эти запросы и возвращает соответствующие ответы.

5. Кэширование (Caching): REST API поддерживает кэширование, что позволяет клиентам сохранять копии ответов сервера и использовать их для повторных запросов без обращения к серверу.

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

Базовые понятия Rest API — HTTP-протокол и API

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

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

Пример
Бухгалтерское приложение для выставления счетов. Счета хранятся на сервере: мобильное приложение обращается к нему через API и показывает на экране то, что нужно.

REST API позволяет использовать для общения между программами протокол HTTP (зашифрованная версия — HTTPS), с помощью которого мы получаем и отправляем большую часть информации в интернете.

HTTP довольно прост. Посмотрим на его работу на примере. Допустим, есть адрес http://website.com/something. Он состоит из двух частей: первая — это адрес сайта или сервера, то есть http://website.com. Вторая — адрес ресурса на удаленном сервере, в данном примере — /something.

Вбивая в адресную строку URL-адрес http://website.com/something, мы на самом деле идем на сервер website.com и запрашиваем ресурс под названием /something. «Пойди вот туда, принеси мне вот то» — и есть HTTP-запрос.

-2

Пример HTTP-запроса к серверу

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

Пример
В бухгалтерском сервисе работа со счетами может быть представлена в API ресурсом /invoices. А банковские реквизиты — ресурсом /requisites. Названия ресурсов придумывают по правилам формирования URL в интернете.

Методы HTTP: основа работы REST API

Чтобы ресурс, который вы запрашиваете, выполнял нужные действия, используют разные способы обращения к нему. Например, если вы работаете со счетами с помощью ресурса /invoices, который мы придумали выше, то можете их просматривать, редактировать или удалять.

В API-системе четыре классических метода:

  1. GET — метод чтения информации. GET-запросы всегда только возвращают данные с сервера, и никогда их не меняют и не удаляют. В бухгалтерском приложении GET /invoices вы открываете список всех счетов.
  2. POST — создание новых записей. В нашем приложении POST /invoices используется, когда вы создаете новый счет на оплату.
  3. PUT — редактирование записей. Например, PUT /invoices вы исправляете номер счета, сумму или корректируете реквизиты.
  4. DELETE — удаление записей. В нашем приложении DELETE /invoices удаляет старые счета, которые контрагенты уже оплатили.

Таким образом, мы получаем четыре функции, которые одна программа может использовать при обращении к данным ресурса, в примере — это ресурс для работы со счетами /invoices.

Построение API-системы с использованием ресурсов, HTTP и различных запросов к ним как раз и будет Representational State Transfer (REST API) — передачей состояния представления.

Для чего используют REST API

Архитектура REST API — самое популярное решение для организации взаимодействия между различными программами. Так произошло, поскольку HTTP-протокол реализован во всех языках программирования и всех операционных системах, в отличие от проприетарных протоколов.

Чаще всего REST API применяют:

  1. Для связи мобильных приложений с серверными.
  2. Для построения микросервисных серверных приложений. Это архитектурный подход, при котором большие приложения разбиваются на много маленьких частей.
  3. Для предоставления доступа к программам сторонних разработчиков. Например, Stripe API позволяет программистам встраивать обработку платежей в свои приложения.

Что еще важно знать при работе с REST API

Каждый REST API запрос сообщает о результатах работы числовыми кодами — HTTP-статусами.

Например, редактирование записи на сервере может отработать успешно (код 200), может быть заблокировано по соображениям безопасности (код 401 или 403), а то и вообще сломаться в процессе из-за ошибки сервера (код 500). Цифровые статусы выполнения ошибок — аналог пользовательских сообщений с результатами работы программы.

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

Есть и другие способы построения API-систем, например: JSON-RPC, XML-RPC и GraphQL. Но пока REST остается самым популярным и востребованным инструментом для построения взаимодействий между удаленными приложениями.
За годы использования REST инженеры накопили много практик по разработке API, балансировке и обработке API HTTP-трафика на облачных и железных серверах, а также в приложениях, которые работают в контейнерах. Так что REST API — пример решения, которое подходят для почти любых систем.

1606 вопрос-ответ по Java

Курс Spring Framework

Tелеграмм каналDEBAGanov

Мое резюмеDEBAGanov

Если вам понравилось, буду признателен за подписку.