API
Application Programming Interface — описание способа взаимодействия с приложением
REST Одно из таких описаний причем очень популярное например: API Twitter, Instagram, Spotify, Google Maps соответствует REST спецификации
Согласно Википедии:
Передача состояния представления (REST) - это архитектурный стиль программного обеспечения, который определяет набор ограничений, используемых для создания веб-сервисов. RESTful Web-сервисы позволяют запрашивающим системам получать доступ к текстовым представлениям Web-ресурсов и манипулировать ими, используя унифицированный и предопределенный набор операций без статического состояния.
Давайте разберемся, что это значит. По сути, REST - это набор правил для взаимодействия между клиентом и сервером. На которые накладывается несколько ограничений:
- Клиент-серверная архитектура: пользовательский интерфейс сайта/приложения должен быть отделен от запроса/хранилища данных, поэтому каждая часть может масштабироваться отдельно.
- Нестационарность: в процессе взаимодействия на сервере не должен храниться контекст клиента. Это означает, что каждый запрос к серверу должен выполняться со всеми необходимыми данными, и не должно быть никаких предположений о том, есть ли у сервера данные от предыдущих запросов.
- Многоуровневая система: клиент не должен быть в состоянии определить, общается ли он непосредственно с сервером или с каким-то посредником. Эти промежуточные серверы (будь то прокси или балансировщики нагрузки) обеспечивают масштабируемость и безопасность основного сервера.
Итак, теперь, когда вы знаете, что такое RESTful-сервисы, вот некоторые термины, используемые в этом заголовке:
- REST-клиент: код или приложение, которое может получить доступ к этим REST-сервисам. Вы используете один из них прямо сейчас! Да, браузер может выступать в роли неконтролируемого REST-клиента (веб-сайт обрабатывает запросы браузера). Долгое время браузер использовал встроенную функцию XMLHttpRequest для всех REST-запросов. Но на смену ей пришел FetchAPI - современный подход к запросам, основанный на обещаниях. Другие примеры - библиотеки кода, такие как axios, superagent и got, или некоторые специализированные приложения, такие как Postman, или инструмент командной строки, такой как cURL!
- REST-сервис: сервер. Существует множество популярных библиотек, позволяющих легко создавать такие серверы, например ExpressJS для NodeJS и Django для Python.
- REST API: определяет endpoint и методы, с помощью которых можно получить доступ/отправить данные на сервер. Мы подробно поговорим об этом ниже. Другими альтернативами этому являются: GraphQL, JSON-Pure и oData.
В самом широком смысле вы запрашиваете у сервера определенные данные или просите его сохранить какие-то данные, а сервер отвечает на запросы.
Если говорить языком программирования, то существует конечная точка (URL), к которой сервер ожидает запрос. Мы подключаемся к этой конечной точке и отправляем некоторые данные о себе (помните, REST - это stateless, никакие данные о запросе не хранятся), а сервер отвечает правильным ответом.