В чем разница между API и REST API?
API — это общий термин, который означает «программный интерфейс приложения». Rest API — это конкретный API, под названием REST, описывающий протокол взаимодействия с веб-сервисом.
Отслеживать
ответ дан 29 мар 2017 в 14:28
Александр Мартынцев Александр Мартынцев
1,669 8 8 серебряных знаков 16 16 бронзовых знаков
- api
- rest
- терминология
-
Важное на Мете
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.1.3.2953
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Введение в API и REST API


Говоря простыми словами, API — это набор договоренностей, благодаря которым программы могут общаться между собой, обмениваться информацией. API описывает протокол передачи данных, формат данных и непосредственно модель самих данных. Это нужно для того, чтобы программы вели себя соответствующе заданному «контракту» и обменивались только теми данными, которые описаны в контракте. Чаще всего вы встретите определение API как Application Programming Interface — программный интерфейс приложения. Приложением может быть любое ПО или программа, которая что-то принимает на вход для обработки данных и что-то возвращает после обработки. Такая схема очень похожа на взаимодействие логико-структурных элементов ЯП: классы, методы, функции, переменные. Например, в Python, это может выглядеть так: from functools import reduce
def quader(*args: int) -> int:
«»»
Функция принимает на вход любое количество аргументов, перемножает их между собой, возводит в квадрат и возвращает результат в виде целочисленного числа.
«»»
return reduce(lambda x, y: x * y, map(lambda x: x * x, args))
def fibonachi(n: int) -> list:
«»»
Функция принимает на вход целочисленное число и строит ряд Фибоначчи, длиной равной переданному аргументу в функцию.
«»»
fib_sequence = [0, 1]
for i in range(2, n):
fib_sequence.append(fib_sequence[-1] + fib_sequence[-2])
return fib_sequence[:n]
- для определения местоположения используется API андроида для запроса к GPS;
- для отображения карты используется API Yandex Карт;
- для оплаты используется API эквайринга.
API — это интерфейс, своего рода связующее звено или граница между двумя системами, которые общаются друг с другом, при этом API ничего не знает о том, что происходит внутри каждой из систем. Такой подход обеспечивает гибкость и независимость в разработке. Мы просто что-то отправляем по API в систему, а она нам возвращает результат и нам не нужно знать, как это всё работает под капотом.
Благодаря такому подходу разработчики и пользователи получили удобные инструменты разработки и взаимодействия с целыми системами. Например, ОС предоставляет API для работы программ с ресурсами компьютера. Так программы могут получать доступ к видеокарте для отрисовки графики, или получать доступ к устройствам ввода для взаимодействия с интерфейсом программы.
Как мы говорили ранее, API определяет не только какая информация и в каком формате будет передана, но и как эту информацию нужно передать. Всего есть 4 общепринятых типа построения API:
- SOAP (Simple Object Access Protocol) — это протокол для обмена структурированными сообщениями между веб-сервисами. Он использует формат данных XML для кодирования сообщений. SOAP применяется в распределенных системах и веб-сервисах для взаимодействия между клиентами и серверами. Сегодня SOAP встречается не так часто, так как XML довольно громоздкий, а сама архитектура SOAP не гибкая.
- RPC (Remote Procedure Call) API — это метод взаимодействия между компонентами распределенной системы, позволяющий вызывать функции на удаленном сервере, как будто они являются локальными. Формат данных в RPC может быть разным, включая XML, JSON и бинарные форматы. RPC API применяется в распределенных системах для обеспечения совместной работы между клиентами и серверами с минимальными задержками.
- WebSocket API — это двунаправленный протокол связи, позволяющий установить постоянное соединение между клиентом и сервером для обмена данными в режиме реального времени. Формат данных в WebSocket может быть текстовым или бинарным, включая JSON, XML и другие. WebSocket API часто используется в веб-приложениях для обмена сообщениями между сервером и браузером пользователя, например, в онлайн-играх, чатах или приложениях для обмена данными в реальном времени.
- REST (Representational State Transfer) API — это архитектурный стиль для разработки веб-сервисов, основанный на стандартных HTTP-методах и ресурсоориентированном подходе. Формат данных в REST API может быть разнообразным, включая JSON, XML и другие. REST API широко применяется в веб-приложениях и мобильных приложениях для обеспечения межсистемного взаимодействия и интеграции с различными сервисами и платформами.
Наибольшее распространение получил REST формат API, так как он наиболее прост для разработки и понятен для пользователей. Именно о REST мы и будем говорить далее.
Что такое REST API?

REST (Representational State Transfer) API работает поверх HTTP(S)-протокола и максимально эффективно использует его свойства. Можно сказать, что REST — это не какой-то стандарт, а архитектурный стиль написания запросов. Часто ещё его называют RESTful API. А вот HTTP (HyperText Transfer Protocol) — это протокол передачи данных, используемый во всемирной паутине для обмена информацией между клиентами и серверами.
HTTP определяет методы запроса к ресурсу, которые используются для выполнения разных операций:
- GET-запрос используется для получения информации от сервера. Он запрашивает данные от определенного ресурса и не вносит изменения на сервере. Примером может быть просмотр веб-страницы или получение данных из API.
- PUT-запрос используется для обновления существующих данных на сервере. Он требует передачи полного обновленного набора данных для указанного ресурса. Если ресурс не существует, сервер может создать его, в зависимости от реализации.
- DELETE-запрос используется для удаления указанного ресурса на сервере. Он не требует передачи дополнительных данных.
- POST-запрос используется для создания нового ресурса на сервере. Он передает данные, которые должны быть использованы для создания нового ресурса. В отличие от PUT-запроса, POST-запрос не требует знания о существующих ресурсах и их идентификаторах.
HTTP-запрос определяется HTTP-методом и может содержать различные заголовки и информацию в виде JSON-данных для обработки. Вот так может выглядеть схема работы HTTP-запроса к 1cloud API для получения баланса проекта:

Как видно из схемы клиент отправляет запрос на определенный URI, с указанием конкретного метода запроса и заголовками. В нашем случае, мы послали GET-запрос на URI: https://api.1cloud.ru/customer/balance с заголовком Authorization и значением Bearer … — многоточие указывает на API-ключ, который обязательно указывается при любых API-запросах к 1cloud API.
В ответ API-сервер 1cloud нам возвращает список значений. Об этом свидетельствуют квадратные скобки. В зависимости от запроса, API-сервер может возвращать различной сложности JSON-данные. Например, при запросе списка серверов, в ответ мы получим JSON следующего вида:
JSON является общепринятым форматом передачи данных в REST API, так как его легко конвертировать в любой другой формат и с ним работают все ЯП.
Еще одной важной отличительной чертой REST является то, что REST API не хранят состояния. Это означает, что при каждом обращении к ресурсу через определенную конечную точку (endpoint), API предоставляет идентичный ответ, не учитывая предыдущие запросы, которые не влияют на последующие результаты.
Хорошо, у нас уже есть общее представление о том, что такое API и REST API. Настало время углубиться и разобраться детальнее в том, как оно работает.
Работа REST API на примере 1cloud API

Рассмотрим работу REST API на примере реализации 1cloud API. Как мы уже говорили ранее, одно из ключевых понятий REST API — это ресурс. Ресурсы связаны с определенными URI, а те в свою очередь связаны с HTTP-методами запроса.
1cloud — это облачный провайдер, который предоставляет такие ресурсы как виртуальные серверы на базе Enterprise и Open Source виртуализаций, виртуальные ЦОДЫ, S3-хранилища, DNS-хостинг, мониторинг и многие другие услуги, некоторые из которых имеют управление по API. Например, виртуальные серверы.
Для управления виртуальными серверами 1cloud нужно посылать определенные HTTP-запросы на нужные URL. Структура URL и запросов следующая:
| URL | HTTP-запрос | Действие | Ответ |
|---|---|---|---|
| https://api.1cloud.ru/server/ | GET | Запросить список созданных серверов. | JSON со списком созданных серверов. |
| POST | Создать виртуальный сервер. | JSON со статусом создания виртуального сервера. | |
| https://api.1cloud.ru/server/ | DELETE | Удаление виртуального сервера по id. | Текст со статусом «OK». |
| PUT | Изменение конфигурации виртуального сервера по id. | JSON со статусом задачи и выходными параметрами измененного сервера. | |
| https://api.1cloud.ru/server//action | POST | Выполнение действий над сервером: вкл./выкл. сервер по питанию и средствами OS, перезагрузить сервер по питанию или средствами OS. | JSON со статусом задачи. |
| https://api.1cloud.ru/server//action | GET | Получить список действий над сервером. | JSON со списком действий над сервером. |
Использование HTTP-методов, как правило, подразумевает передачу дополнительных заголовков и данных для обработки на сервере. В случае с 1cloud API в качестве дополнительного заголовка передается:
- Тип данных, которые отправляются или принимаются от сервера — Content-Type: application/json;
- API-ключ для авторизации — Authorization: Bearer XXX…
В теле сообщения, в JSON-формате передаются данные необходимые для выполнения определенных действий. Так заголовок авторизации с API-ключем передается всегда: ‘Authorization: Bearer XXX..’, а вот данные в теле запроса, указываются только для PUT и POST запросов.
Получить API-ключ для авторизации можно в Панели управления 1cloud, в разделе «Настройки» -> «Настройки профиля» -> «API-ключ»:

Отправить HTTP-запрос можно множеством инструментов: начиная от исполняемых скриптов, заканчивая специальными программами. Например, postman или curl. Работать с 1cloud API через Python мы будем в следующей статье, а сейчас посмотрим, как это всё работает через cURL и Postman.
Вот как будет выглядеть HTTP-запрос на получение списка виртуальных серверов 1cloud:
| cURL | Postman |
|---|---|
| curl -X GET -H ‘Content-Type: application/json’ -H ‘Authorization: Bearer XXX…’ «https://api.1cloud.ru/server» | GET /server HTTP/1.1 Host: api.1cloud.ru Content-Type: application/json Authorization: Bearer XXX… |
В ответ мы получим JSON со списком серверов следующего типа (некоторые поля удалены для сокращения длины сообщения):
[
«ID»: 945993,
«Name»: «Server»,
«State»: «Active»,
«IsPowerOn»: true,
«CPU»: 2,
«RAM»: 2048,
«HDD»: 40,
«IP»: «188.227.17.34»,
«Image»: «Ubuntu18.04×64»,
«IsHighPerformance»: false,
«HDDType»: «SSD»,
«PrimaryNetworkIp»: «188.227.17.34»,
«LinkedNetworks»: [],
«DCLocation»: «SdnSpb»,
«LinkedSshKeys»: [],
«DateCreate»: «2023-04-26T14:25:38.867»
>
]
Хорошо, с GET запросами всё просто, куда интереснее дела обстоят с PUT и POST запросами. Вместе с заголовками нам нужно передать еще и тело сообщения (body) с определенными ключами и значениями, которые строго определены в документации к 1cloud API.
Вот пример HTTP-запроса на создание сервера в ЦОДе Xelent:
В ответ мы получим JSON с параметрами созданного сервера:
«ID»: 947517,
«Name»: «testapi1»,
«HostName»: null,
«State»: «New»,
«IsPowerOn»: false,
«CPU»: 2,
«RAM»: 2048,
«HDD»: 40,
«IP»: «»,
«AdminUserName»: null,
«AdminPassword»: null,
«Image»: «WinServer2012R2x64En»,
«IsHighPerformance»: false,
«HDDType»: «SSD»,
«PrimaryNetworkIp»: «»,
«LinkedNetworks»: [],
«DCLocation»: «SdnSpb»,
«ImageFamily»: «Windows»,
«LinkedSshKeys»: [],
«DateCreate»: «2023-04-27T11:56:15.1221137+03:00»
>
Эти данные пока не очень полезны (кроме ID-сервера), так как не содержат данные для подключения. Для получения этой информации после создания сервера нужно отправить HTTP-запрос на получение списка серверов — там будет информация для подключения к серверам.
Если нужно удалить сервер — достаточно отправить DELETE HTTP-запрос на URL https://api.1cloud.ru/server/, где id подменяется на числовое id-сервера. Например, удалить сервер 945993 можно так:
| cURL | Postman |
|---|---|
| curl -X DELETE -H ‘Content-Type: application/json’ -H ‘Authorization: Bearer XXX…’ «https://api.1cloud.ru/server/945993» | DELETE /server/ HTTP/1.1 Host: api.1cloud.ru Content-Type: multipart/form-data; boundary=—-WebKitFormBoundary7MA4YWxkTrZu0gW Authorization: Bearer XXX… |
Итак, с помощью 1cloud API вы можете совершать множество действий с серверами и другими ресурсами облачного провайдера. Но использовать для управления ресурсами cURL или PostMan — это не самый удобный путь. В следующей статье мы покажем как можно использовать 1cloud API более эффективно с помощью Python, а пока подведем итог.
Кратко о API и REST API

API — это набор договоренностей и правил между программами для обмена данными. API предоставляет интерфейс для общения программ, при этом ему ничего не нужно знать о том, что происходит внутри взаимодействующих элементов. API работают поверх различных протоколов. Например, REST API работает поверх HTTP-протокола.
REST API или RESTful API — это стиль написания API-запросов, который использует стандартные HTTP-методы для работы. Часто при работе с REST используют понятие CRUD-модели, каждому элементу из которых соответствует свой HTTP-метод:
- С — create (POST);
- R — read (GET);
- U — update (PUT);
- D — delete (DELETE).
Главной отличительной особенностью REST API является то, что он направлен на использование ресурсов, то есть у каждого ресурса есть свой URL, с которым мы можем взаимодействовать с помощью HTTP-методов. Обычно API URL имеют такой вид: базовый URI + URI ресурса. Хорошим примером является URL 1cloud API: базовый URI — https://api.1cloud.ru/ + URI ресурса — /server/, /dns/, /monitoring/.
Работать с REST API можно как с помощью специализированных программ: cURL, PostMan, так и с помощью различный ЯП библиотек:
- Go:
- net/http: Встроенный пакет для работы с HTTP, включая отправку и получение HTTP-запросов.
- resty: Простая и легкая библиотека для выполнения HTTP-запросов с функциями, такими как автоматическое повторение запросов и поддержка таймаутов.
- Rust:
- reqwest: Асинхронная библиотека для выполнения HTTP-запросов с поддержкой множества функций, таких как JSON, отправка форм и пр.
- hyper: Низкоуровневый, асинхронный клиент и сервер HTTP, позволяющий создавать кастомные HTTP-запросы и обработчики.
- C++:
- libcurl: Многофункциональная библиотека для работы с URL, включая поддержку HTTP, HTTPS и других протоколов.
- cpprestsdk (C++ REST SDK, также известная как Casablanca): Библиотека для создания клиентов и серверов REST на C++.
- C#:
- HttpClient: Встроенный класс в .NET Framework и .NET Core для отправки HTTP-запросов и получения HTTP-ответов от REST API.
- RestSharp: Простая и популярная библиотека для работы с HTTP и RESTful веб-сервисами в C#.
- Python:
- http.client (Python 3) / httplib (Python 2): Встроенная библиотека для работы с HTTP, предоставляющая классы для реализации HTTP-клиентов.
- urllib: Встроенная библиотека для работы с URL, включая отправку HTTP-запросов. В Python 3, эта библиотека разделена на две части — urllib.request и urllib.parse.
- aiohttp: Асинхронная библиотека для выполнения HTTP-запросов, основанная на asyncio и применяющаяся в асинхронных приложениях Python.
- treq: Библиотека для работы с HTTP, основанная на Twisted и предоставляющая аналогичный requests интерфейс, но в асинхронном контексте.
- httpx: Полнофункциональный асинхронный клиент HTTP для Python 3, предоставляющий поддержку HTTP/1.1 и HTTP/2.
В следующей статье мы рассмотрим примеры работы с 1cloud API через Python, с использованием стандартной библиотеки Python — requests.
Что такое REST и RESTful api?
Объяснити пожалуйста как для 5 летнего ребенка, потому что то как написано в википедии до меня не доходит.
- Вопрос задан более трёх лет назад
- 81286 просмотров
Комментировать
Решения вопроса 0
Ответы на вопрос 5
private_tm @private_tm
Одно и тоже. По факту обычный текстовый проток запросов ответов
запрос
https://toster.ru/?question=»Как тебя зовут?»
ответ в формате json
name: «Вася»
ПС: рановато ребенку 5-ти лет такое знать))
ПС ПС не так прочитал))
Ответ написан более трёх лет назад
Нравится 6 1 комментарий
Имхо, это не Restful запрос, т.к. нет URI для ресурса.
Для Restful запрос должен быть вроде:

Антон Дзодзиков @DzodzikovAK
Java Developer
REST — набор архитектурных принципов построения сервис-ориентированных систем.
RESTful — прилагательное, употребляющееся по отношению к сервисам, которые следуют принципам REST.
Что такое REST API и чем оно отличается от другого API?
API является аббревиатурой от Application Programming Interface, что в переводе означает программный интерфейс приложения. API представляет набор правил и функций, позволяющих двум разным приложениям взаимодействовать друг с другом. Подобные интерфейсы облегчают интеграцию приложений, давая возможность разработчикам создавать мощные диджитал решения.
API выступает посредником между приложениями, отправляя запросы и ответы. Например, регистрация в приложении через существующий аккаунт в Twitter пользователя происходит через API Twitter, который разработчики интегрировали в приложение.
Для отправки и получения тех самых запросов (функций) и в зависимости от назначения API следует разным протоколам и стандартам. Различают следующие типы протоколов и архитектур:
- XML-RPC — позволяет выполнять обмен функциями между двумя или более сетями. XML-RPC использует XML для описания запросов и ответов, и при помощи протоколов HTTP передает информацию от клиента к серверу.
- JSON-RPC — это облегченный RPC, похожий на XML. Протокол закодирован в JSON, позволяет получать вызовы на сервер с возможностью асинхронных ответов.
- SOAP — simple object access protocol — протокол для обмена структурированной информацией при реализации веб-сервисов в компьютерных сетях. SOAP использует XML для аутентификации, авторизации и взаимодействия процессов в операционных системах и позволяет клиентам вызывать веб-сервисы и получать ответы независимо от языка и платформы.
- REST API — репрезентативная передача состояния (REST) — это архитектурный стиль, который осуществляет реализацию клиента и сервера независимо друг от друга. Сервисы в REST API взаимодействуют по протоколу HTTP.
Именно на REST API мы заострим наше внимание и детально разберем, что это такое и чем интерфейс отличается от других типов API.
Что такое REST API
REST или Representational state transfer, что переводится как передача состояния представления — это архитектурный стиль проектирования API с использованием протокола HTTP. Главное преимущество REST — большая гибкость.
REST API применяется везде, где есть необходимость предоставления данных с сервера пользователю веб-приложения или сайта.
Главными компонентами REST API являются:
Client — клиент или программа, которая запущена на стороне пользователя (на его девайсе) и инициирует коммуникацию.
Server — сервер, который предоставляет API в качестве доступа к своим данным и функциям.
Resource — ресурс представляет собой любой вид контента (видео, текст, картинка), который сервер может передать клиенту.
Как работает REST API
REST API взаимодействует при помощи HTTP запросов, выполняя стандартные функции: создание, обновление, чтение, удаление записей в ресурсе. Существует четыре метода, описывающих, что нужно делать с ресурсом:
Ресурс
Ресурс — это ключевая абстракция информации. Любой вид информации, который мы можем использовать, может быть ресурсом: документ, изображение, временный сервис.
Состояние ресурса в любой определенный момент называется представлением ресурса. Оно состоит из:
- данных;
- метаданных, описывающих данные;
- гипермедиа ссылок, которые помогают клиентам перейти в следующее состояние.
Эта информация доставляется клиенту в любом формате: JavaScript (JSON), HTML, XLT, Python, PHP или простой текст.
JSON наиболее популярен, потому что он читабелен для машин и людей и не зависит от языка программирования.
Чтобы получить доступ к ресурсу, клиент отправляет запрос. Сервер генерирует ответ с закодированными данными о ресурсе.
Структура любого запроса включает в себя четыре основных компонента: HTTP метод (о которых мы говорили ранее), эндпоинты, заголовки и тело.
HTTP метод описывает, что должно быть сделано с ресурсом. Чуть выше мы упоминали 4 доступных метода: POST, GET, PUT, DELETE.
Эндпоинт содержит URI — Uniform Resource Identifier (унифицированный идентификатор ресурса), который указывает, где и как найти ресурс в Интернете. Самый распространенный тип URI — это URL или Uniform Resource Location, который является полноценным веб-адресом.
Заголовки хранят информацию, относящуюся как к клиенту, так и к серверу. Главным образом, заголовки предоставляют аутентификационные данные: API ключ, название или IP адрес компьютера, на котором установлен сервер, а также информацию о формате ответа.
Тело необходимо для передачи серверу дополнительной информации: данные тела body — это данные, которые вы, к примеру, хотите добавить или заменить.
Принципы REST API
REST не привязан к какой-либо конкретной технологии или платформе, он не зависит от языка. Он также не указывает, как именно создавать API, но использует 6 архитектурных ограничений, которые должны быть соблюдены, чтобы интерфейс можно было назвать RESTful. Именно эти принципы REST API описывают, как сервер обрабатывает запросы и отвечает на них.
Попробуйте no-code платформу AppMaster
AppMaster поможет создать любое веб, мобильное или серверное приложение в 10 раз быстрее и 3 раза дешевле
Client-server
Приложение REST имеет клиент-серверную архитектуру. Клиентом является тот, кто отправляет запросы на ресурсы и никак не связан с хранилищем данных. Хранение данных остается внутри сервера. Серверы же не связываются с пользовательским интерфейсом. Другими словами, клиент и сервер независимы друг от друга и могут развиваться отдельно, что делает REST API более гибким и масштабируемым.
Uniform Interface
Унифицированный интерфейс или единый интерфейс — это главное, что отличает REST API от других видов. Он предполагает наличие единого способа взаимодействия с сервером вне зависимости от типа устройства или приложения.
Единый интерфейс включает в себя четыре основных принципа:
- Identification of resources. Каждый ресурс в REST имеет идентификатор, который не зависит от состояния ресурса. В роли идентификатора выступает URL.
- Manipulation of resources through representations (манипулирование ресурсами через представления). Клиент имеет представление ресурса, которое содержит данные для его удаления или изменения. Клиент отправляет представление на сервер (объект JSON), который он хочет изменить, удалить или добавить.
- Self-descriptive messages (самодокументируемые сообщения). Такие сообщения содержат нужную информацию для получателя, чтобы понять ее. Никакой дополнительной информации не требуется в отдельной документации или сообщениях. Каждое сообщение имеет достаточную информацию, чтобы сервер легко проанализировал запрос.
- Hypermedia as the engine of application state (гипермедиа как двигатель состояния приложения). Гипермедиа подразумевает использование ссылок для каждого ответа, чтобы клиент мог найти другие ресурсы. Таким образом все взаимодействия в REST проходят через гипермедиа.
Stateless (без состояния)
Сервер не содержит никакой информации о клиенте. Каждый запрос включает всю необходимую информацию для обработки. Информация о сессии полностью хранится на стороне клиента.
Cacheable (кэшируемость)
Каждый ответ должен содержать данные о том, является ли он кэшируемым или нет и в течение какого времени ответ может быть кэширован на стороне клиента. Если ответ может быть кэширован, то в последующих похожих запросах клиент может использовать те же данные без повторного обращения на сервер. При правильном использовании это улучшает производительность и доступность.
Layered system (многоуровневая система)
В REST используется многоуровневая система — иерархия слоев, которая создает определенные ограничения на поведение компонентов. В многоуровневой системе, компоненты могут видеть только те компоненты, которые расположены на ближайших уровнях и с которыми они взаимодействуют.
Code on demand (код по запросу)
Это опциональная функция, которая позволяет клиенту загружать и выполнять код.
Главные отличия REST API от других API
Шесть принципов REST API являются основными отличиями интерфейса от других типов. Помимо этого, есть еще несколько параметров, которые отличают REST от других API.
В первую очередь, сама суть REST определяет его несопоставимость с другими протоколами. REST — это архитектурный стиль, где архитектура REST представляет набор требований, которым нужно следовать, чтобы предоставить веб-службу RESTful. A, например, SOAP и RPC являются протоколами обмена сообщениями. Протокол описывает эти сообщения, когда архитектурный REST API только определяет требования (в данном случае ограничения), которые сообщения должны выполнять.
Структура
Большинство программных интерфейсов работают в формате приложение-приложение, когда REST действует по принципе Клиент-Сервер. В данном случае клиент и сервер не зависят друг от друга, что дает больше гибкости в работе.
Формат обмена сообщениями
Обычно API используют конкретные форматы сообщений, например, SOAP использует XML. REST не придерживается такого строгого принципа. Обмен сообщений может происходить на основе JSON, XML или любого другого формата. Самым популярным является JSON (JavaScript Object Notation).
Популярность JSON вполне обоснована — это легко читаемый человеком и быстрый для анализа формат обмена данными. JSON независим от языка и может быть использован с любым языком программирования помимо JavaScript.
Гибкость
REST является более гибкой архитектурой, благодаря чему и стал таким популярным. Он решает проблемы, которые вызывает тот же SOAP, являясь сложным протоколом с расширенными функциями безопасности, что требует большей пропускной способности. REST состоит из простых рекомендаций, давая возможность разработчикам реализовывать требования в своем формате. Архитектурный стиль также имеет высокую производительность. Что сделало особенно востребованным для мобильных устройств, где быстрота загрузки особенно важна.
REST обладает определенными преимуществами над другими типами API. Именно поэтому все крупные компании такие, как Twitter и Google, уже давно внедрили REST API для своих продуктов. Ведь это идеальный способ передачи функций и данных разработчикам по всему миру и проверенный механизм для создания эффективных и масштабируемых интерфейсов для разработки ПО.