Журнал

Как работают веб-приложения. Часть 2: Что такое API

6.12.2022

Первая статья цикла: Зачем нужен бэкенд и фронтенд

В широком смысле API – это вид интерфейса и расшифровывается как «программный интерфейс приложения» (Application Programming Interface).

Что мы подразумеваем под словом интерфейс?

Пользовательский интерфейс

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

Человек-программа

Пример:

Представьте себе приложение маркетплейса: множество товаров с описанием, наша собственная корзина, время доставки товара – все это представляется пользователю «на его языке» понятным и красивым образом. А как эти данные хранит само приложение? Наверняка там есть база данных со множество таблиц, нас будут интересовать три: товары, пользователи, заказы. В упрощенном виде это будет выглядеть вот так:

Программа, например, высчитывает каждый раз время доставки, по гео-данным товара и пользователя. Только представьте сколько еще данных надо было бы хранить, если бы создавалась запись для каждой пары пользователь:товар. Заказ из корзины пользователя так же записывается в таблицу заказов, в этой записи мы ссылаемся на id товаров из одной таблицы и на id пользователей из другой. С точки зрения работы программы – это удобно, а вот пользователю это представляется совсем по-другому.

Программа-программа

На примере пользовательского интерфейса, мы разобрались в целом со словом интерфейс – это некоторая прослойка для взаимодействия чего-бы то ни было: человек-программа, программа-программа, даже человек-человек.

Осталось разобраться с программным видом интерфейсов. Большое приложение состоит из множества компонент, модулей, сервисов, одним словом – почти самостоятельных частей. Например, бэкенд и фронтенд. А может быть еще отдельный сервис приложения, который отправляет e-mail сообщения или модуль программы, для распознавания людей в кадре. Т.е. таких частей может быть много, у них есть какие-то функциональные задачи и эти части программы должны между собой как-то общаться – обмениваться информацией.

Пример:

API

Функциональные части программы общаются между собой с помощью API. Таких интерфейсов существует множество, но базовые принципы у них одинаковые. Поэтому, мы будем разбираться на примере API взаимодействия фронтенда и бэкенда, так как без него не обходится вообще ни одно web-приложение. Ключевая особенность заключается в том, что части web-приложения разнесены географически: браузеры пользователей на их устройствах и сервер (или много серверов) приложения. Это значит, что фронтенд и бэкенд общаются по сети.

Обилие аббревиатур: SOAP API, RESTful API и т.п. – не должно сбивать с толку, в конечном счете это просто набор разных правил, которые регламентируют то самое «общение программ». В дальнейшем, мы будем рассматривать примеры, связанные именно с REST API (это популярно, наглядно, зачастую наиболее эффективно).

Сетевые запросы отправляет приложение, которое в том числе работает в вашем браузере. А это значит, что мы можем «своими глазами» посмотреть на API любого web-приложения.

Пример с браузером:

Откроем web-страницу в браузере.

Например, https://dh.cubicle.53xapps.com/ – ее мы используем в учебных целях в нашей школе DHS.

Это веб-страничка с описанием минималистичного API, которое предоставляет JSON-сервер. 

В учебных целях, фронтенд разработчики часто используют подобное фейковое API чтобы собрать пример собственного приложения. Вот некоторые популярные из них: jsonplaceholderrandomuser.medummyjson.comfakejson.com

Если вы откроете «инструменты разработчика» (на web-странице нажать правой кнопкой мыши и выбрать «посмотреть код») – во вкладке «сеть» вы увидите сетевой GET-запрос и данные, которые мы получили в ответе на него.

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

Немного о сетевых протоколах

Популярная аббревиатура HTTP (HyperText Transfer Protocol) кроет свою суть непосредственно в названии – это протокол передачи гипертекста. То есть это сетевой протокол, позволяющим передавать нам по сети веб-страницы.

На самом деле сетевая передача данных устроена довольно сложно и HTTP это один из множества сетевых протоколов, расположенный на верхнем уровне сетевой модели OSI. О модели можно почитать отдельно, но нам подробности знать не обязательно.

Для обеспечения безопасности соединения используется протокол HTTPS – в название добавили слово «безопасность» и это означает что мы имеем дело с криптографией, а именно с протоком TLS (ранее SSL), обеспечивающим шифрование данных, передаваемых по сети.

HTTP-запросы предоставляют доступ к сетевым ресурсам. Для того чтобы как-то разграничить действия в отношении ресурсов на уровне HTTP придуманы различные методы.

Основные виды:

  • GET – получение данных
  • POST – создание данных
  • PUT – полное обновление элемента
  • PATCH – частичное обновление элемента
  • DELETE – удаление данных

Кроме того, в HTTP существует статус код, состоящий из трех десятичных цифр, который указывает на состояние нашего запроса. Например, популярная фраза “404 Not found” является статус-кодом и пояснением к нему – запрашиваемый ресурс не найден.

Пример с Postman:

Для того, чтобы тестировать и просто отправлять запросы можно пользоваться популярным приложением Postman. Тут есть возможность настраивать параметры вашего сетевого запроса, указывать его методы, способы пред и пост обработки данных запроса. Наши ученики пользуются Postman, когда изучают взаимодействие с бэкендом. Чтобы быстро подготовить бэкенд можно использовать Strapi – специальный фреймворк для управления контентом. Он позволяет нам создать небольшой «бэк» и предоставить REST API для взаимодействия с ним.

Зачем это все

Браузер, Postman, среда программирования – это лишь инструменты разработчика которые позволяют работать с API. Но в конечном счете, эти методы разработчики используют в коде.

Приложение либо отправляет данные либо принимает по заранее установленным в API правилам. Таким образом и обеспечивается взаимодействие программ, ровно для этого и нужен API)))

Похожие статьи:

СТАРТ 23 октября 2023

Привет!
Я бот школы DevHouse.
Хочешь в IT? Я знаю как.
Preloader