Топ-100Что такое REST API? - CodOrbits
LogoCodOrbits

Раздел: Spring REST

Узнайте, как создавать RESTful веб-сервисы с помощью Spring — легко масштабируемые и удобные для API-интеграции.

Все разделы
Иконка Spring REST

Что такое REST API?

Last updated: 11 мая 2025 г.

REST API – простой способ коммуникации между приложениями основанный на http методах передачи данных. Помним эти методы – GET, POST и др.

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

Приложения между которыми происходит обмен могут быть написаны на разных языках, главное чтобы эти приложения были способны пропарсить (это значит считать данные из файла) передаваемые файлы с данными (XML, JSON или HTML файлы).

Что же такое API?

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

Кроме самих методов, API включает правила, как правильно к ним обращаться: какой HTTP-метод использовать (GET, POST и т.д.), какие данные передавать и что можно получить в ответ.

Если говорить ещё точнее, API — это интерфейс серверного приложения, то есть набор доступных снаружи способов взаимодействия с сервером без знания его внутреннего устройства.

То есть под API-интерфейсом понимается то, что мы описали выше: серверные HTTP-обработчики и правила, как к ним обращатьсябез знания внутренней реализации обработчиков.

У каждого специализированного веб-приложения может быть свое собственное особенное API.

Example

Например, API приложения для покупки билетов.

У сервиса для покупки билетов есть API, который позволяет клиентскому приложению отправить запрос на бронирование или оплату. Сервер обрабатывает этот запрос и возвращает результат.

У многих известных веб-сервисов, как правило, есть свое API. У Facebook, GitHub и т.д. API, как уже говорилось, это методы(функции) для обмена данными определенные в программах этих веб-сервисов. Вышеупомянутые веб-ресурсы предоставляют ссылки для обращения к своим методам. То есть кто угодно может сделать запрос к какому-либо методу веб-сервиса по этим ссылкам и получить от этого веб-сервиса какие-то данные.

Давайте для примера посмотрим на страницу с перечислением Api методов сервиса FaceBook предназначенных для сбора статистики FaceBook страницы:

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

Таким образом через ссылки можно взаимодействовать с Api Фейсбука.

Есть не один архитектурный стиль построения APIRPC, SOAP, REST и другие. Мы будем рассматривать REST стиль, так как он самый популярный.

Отличительной особенностью REST API от других стилей является то, что этот стиль лучше подходит для взаимодействия клиентского приложения с ресурсом (например с БД), который находиться на серверном приложении. То есть это как раз хорошо подходит для того чтобы клиент совершал CRUD операции с ресурсом на сервере.

Как уже говорилось, обменивающиеся данными приложения могут быть написаны на разных языках, ГЛАВНОЕ чтобы они оба использовали REST стиль и были в состоянии прочитать отправляемые друг другу данные.


JSON, Jackson

Самый популярный формат обмена данными сегодня это конечно же JSON.

JSON – просто строка с данными.

Простой пример:

1{
2    "musician_name":"Behoven", 
3    "isclassic": true,
4    "numofoperas": 150
5}

Как видим данные хранятся в JSON в формате пар (то есть например “musician_name”:”Behoven” это одна пара) и их может прочитать и обработать любой язык программирования.

JSON строку можно превратить в Java объект и наоборот (это называется Data binding).

При конвертации JSON в Java объект пара превращается в поле в этом объекте. Левое значение в паре это имя поля объекта – правое это значение поля с таким именем.

То есть в обеъкте, который получиться по итогу конвертации JSON файла выше будет содержаться строковое поле с именем musician_name и значением “Behoven”, будет содержать boolean поле с именем isclassic и значением true и будет содержать числовое поле с именем numofoperas и значением 150.

Jacksonсамое популярное средства для таких конвертаций.

При конвертации ИЗ JSON в объект вызываются нужные setter-ы объекта в который происходит конвертация, при конвертации А когда В JSON из объекта нужные getter-ы.

При создании класса объекта, который будет конвертироваться в JSON и наоборот, для успешной конвертации нужно называть геттеры/сеттеры в нем в соответствии с теми элементами пар JSON, что слева (например musician_name – setMusician_name(), isclassic – setIsclassic()…) иначе jackson не найдет getter/setter методы чтобы совершить конвертацию.


Содержимое запроса/ответа, коды статуса

HTTP запрос/ответэто набор данных.

Example

HTTP запрос состоит из 3 частей:

  • В Request line храниться название метода (POST,GET,…),
  • Header Variablesдоп. инф., например формат отправляемых данных (JSON,xml,…), размер данных и т.д.,
  • Message Body – собственно отправляемый JSON или xml или др.

HTTP ответ отличается от запроса только первым элементом:

В HTTP ответе в Response line храниться код статуса ответа сервера (типа 404 – сервер сообщает этим кодом, что запрашиваемые клиентом данные не найдены на сервере (виноват клиент, что запросил несуществующие данные, поэтому это клиентская ошибка), или 200 – сервер сообщает в ответе этим кодом, что всё прошло успешно).

Вообще коды статуса ответа бывают такие:

  • 100-199 инф-ые,
  • 200-299удача,
  • 300-399перенаправление,
  • 400-499ошибки на клиенте,
  • 500-599ошибки на сервере.

REST клиент

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

Скачаем программу Advanced REST Client по ссылке: https://www.advancedrestclient.com/.

REST клиент это такое средство для тестирования REST приложения.

Допустим мы создали серверное REST приложение, которое принимает JSON от клиентского приложения и отправляет ему в ответ на этот JSON другой JSON.

И нам нужно протестировать этот механизм. То есть нам нужно какое-то средство для того чтобы отправить JSON в наше серверное REST приложение и прочитать ответ, который серверное REST приложение отсылает. Это средство и есть REST клиент.

Их есть много разных в интернете, но мы воспользуемся Advance REST Client.


Тестирование с помощью Rest Client

Отправим GET запрос по ссылке https://api.myip.com (это такой REST API для получения своего IP адреса в формате JSON).

В ARC выберем GET запрос, вобьем ссылку куда будем делать запрос и нажмем send the request.

На картинке ниже можно увидеть все три элемента HTTP ответа – статус 200, headers и сам response c нашим ip.

Это был пример обмена данными в формате JSON между двумя приложениями.

Одно клиентское – Advanced REST Client, другое серверное – https://api.myip.com


Следующие уроки

Первое Spring REST API-приложение

22
мин.

Similar Articles Icon
Divider

Создание REST API CRUD приложения

20
мин.

Similar Articles Icon
Divider

Spring Boot: в чём его сила и удобство?

22
мин.

Similar Articles Icon