Компьютеры и иные современные гаджеты – сложные устройства. В них должны взаимодействовать не только операционные системы и драйверы, но и приложения/сервисы. В противном случае устройство не сможет выполнять те или иные операции.
Для реализации поставленной задачи используются системы API. Сегодня нужно будет познакомиться с ними получше. Предстоит не только разобраться в том, что собой представляет API, но и изучить принципы его работы. А еще – изучить разновидности API и ключевые особенности рассматриваемого компонента. Дополнительно необходимо ознакомиться со способами его вызова.
Предложенная информация рассчитана на широкий пользовательский круг. Она пригодится как IT-специалистам (особенно системным администраторам и веб-разработчикам), так и обычным ПК-пользователям.
Определение
API (Application Programming Interface или просто «АПИ») – это интерфейс программирования приложения. Он представляет собой некое описание способов взаимодействия одной программы на устройстве с другими. Это полная противоположность пользовательскому интерфейсу, который используется для взаимодействия человека с тем или иным приложением.
API чаще всего выступает в качестве описания разнообразных Интернет-протоколов, программных каркасов (фреймворков), а также стандартов вызовов функций имеющейся операционной системы. Этот компонент может быть реализован отдельной библиотекой или сервисом. Используется преимущественно разработчиками для написания всевозможных приложений.
API – это способ взаимодействия программного кода с набором каких-то программных компонентов, с помощью которых одна программа (бот/сайт или другой контент) может использовать другую программу.
Где встречается
Системы API встречаются практически повсеместно. С ними можно столкнуться в:
- Языках программирования. В них API помогает функциям корректно работать и общаться друг с другом. Вызывающая функция должна в обязательном порядке соблюдать тип данных и очередность параметров вызываемой функции.
- Операционных системах. Тут API работает в качестве своеобразного помощника. С ним программы могут получать данные из памяти и менять системные настройки. Именно поэтому для разработки проектов под ту или иную операционную систему, нужно тщательно познакомиться с ее API.
- Веб-сервисах и сайтах. С помощью рассматриваемого компонента сервисы и веб-страницы общаются друг с другом. Если API открытый, то официальная документация по работе с ним публикуется создателями сервиса-источника.
Также программным интерфейсом могут описывать:
- самостоятельные части программного обеспечения;
- приложения в полном объеме;
- полноценные серверы;
- фрагменты программного обеспечения, используемые для реализации тех или иных опций.
Несмотря на то, что изучаемое понятие является достаточно широким и многогранным, оно обычно встречается в веб-сервисах и на сайтах.
Интерфейс – это граница между двумя функциональными системами. Прослойка, на которой происходит взаимодействие сервисов/систем, а также обмен информацией. Процессы внутри каждой системы скрыты друг от друга.
С помощью интерфейсов получается задействовать возможности работы разных сервисов, не думая о том, как они обрабатывают имеющиеся запросы, а также из каких компонентов они состоят.
В качестве примера стоит привести обычный телефонный звонок. Чтобы его совершить, человеку не нужно знать, как осуществляется работа смартфона и каким образом он обрабатывает нажатия на тачскрин. Достаточно запомнить, что в устройстве имеется кнопка, которая всегда будет возвращать один и тот же результат в ответ на конкретные манипуляции (действия).
Аналогично ситуация обстоит с работой API. С помощью его вызова удается выполнять те или иные функции программы, не разбираясь в том, как функционирует самое приложение. Именно поэтому рассматриваемый компонент носит название интерфейса.
Преимущества и недостатки
Работа с программными интерфейсами имеет как сильные, так и слабые стороны. О них должен помнить каждый IT-специалист, чтобы не столкнуться с проблемами в процессе разрешения различных задач.
К преимуществам работы программных интерфейсов можно отнести:
- Стандартизацию интерфейсов. API предоставляют стандартизированные интерфейсы, благодаря которым взаимодействие между элементами становится более прозрачным и простым.
- Упрощение интеграции. Изучаемый элемент дает возможность интегрировать разнообразные системы и их сервисы. Внутреннюю реализацию каждой из них знать и понимать нет никакой необходимости.
- Гибкость и расширяемость. При помощи использования API разработчики способны без затруднений добавлять новые функциональные возможности и сервисы. Это положительно сказывается на функциях итоговых приложений.
- Упрощение пользовательского опыта. Через APIs удается формировать персонализированные и адаптивные приложения. Все это положительно сказывается на пользовательском опыте.
- Эффективность при использовании ресурсов конечного устройства. Изучаемые составляющие дают возможность рационально и эффективно задействовать ресурсы. Это связано с тем, что с помощью API можно многократно использовать функциональность и разнообразные данные.
Недостатки у работы с API тоже есть. К ним относят:
- Контроль за безопасностью. Сервисы и программные интерфейсы, которые недостаточно защищены, могут стать уязвимыми к атакам. Из-за этого приходится обеспечивать дополнительную безопасность и надежность при разработке API.
- Наличие зависимости от внешних сервисов. При использовании изучаемого элемента он становится зависимым от сторонних сервисов и приложений. Это может доставлять некоторые проблемы, если они будут не доступны, а также при изменении интерфейса.
- Сложности в плане поддержки и обновлений. Изменения – это не всегда легко и хорошо. Они могут требовать обновления клиентских программ. Для API такая работа нередко оказывается дорогостоящим процессом.
- Ограничения в плане использования. Существуют АПИ, которые могут предусматривать ограничения по количеству запросов, объему передаваемых данных, доступу к тем или иным функциям. Придется учитывать соответствующие особенности в процессе разработки собственных проектов.
Теперь можно разобраться с составом API. Он включает в себя множество элементов, каждый из которых выполняет строго определенные функции.
Состав и принцип работы
Системы API включают в себя множество компонентов для нормальной работы. Все они отвечают за определенные функциональные возможности.
В состав АПИ входят клиент и сервер. Они используются для работы и взаимодействия между разнообразными системными элементами. Клиенты получают возможность задействовать функциональность и данные, предоставляемые сервером.
Здесь:
- Сервер – это элемент, который используется для хранения данных. Он также обрабатывает запросы и возвращает ответы клиентской стороне. Серверы обычно работают на постоянной основе. Они ожидают запросов от клиентов и обеспечивают им доступ к функциональным возможностям, а также данным посредством APIs.
- Клиент – это программа или устройство, которое отправляет запросы на серверную часть. Она же будет получать от него сформированные ответы. Клиент будет направлять HTTP-запросы (и другие команды) к серверу API, указывая, какие действия и параметры необходимы. После получения ответа – занимается его обработкой.
Между клиентом и сервером работа осуществляется через определенные протоколы. В качестве примера можно привести HTTPS.
Интерфейс
В системах API интерфейс – это специальный набор методов, протоколов и форматов, который определяет способы взаимодействия между разными программными элементами. Он выступает в качестве контракта между разработчиками приложений. Указывает, работа с какими операциями допустима в проектах. А еще – как осуществляется обмен данными через API между приложениями.
Интерфейс АПИ – это своеобразное «окно». Через него человек будет направлять запросы на серверы и получать данные от них для выполнения разнообразных манипуляций в программе или на веб-странице.
Конечные точки
Конечные точки – это EndPoints. Они представляют собой конкретные адреса (URL). С их помощью становится доступна работы клиента с сервером. Через конечные точки клиент способен отправлять запросы для выполнения тех или иных операций, а также для получения некоторых данных от серверной стороны.
Здесь необходимо запомнить следующее:
- Каждая конечная точка идентифицирует определенный ресурс или действие, к которому клиент хочет обеспечить себе доступ. Это может быть информация о заказах, пользователях, продуктах и так далее.
- Каждый EndPoint обладает уникальным URL. Соответствующий адрес используется для обращения клиента к «точке». Обычно он включает в себя базовый адрес АПИ, после которого указывается дополнительный путь или идентификатор ресурса.
- EndPoints определяют то, какие методы работают (поддерживаются) для взаимодействия с ними.
- Каждая конечная точка определяет, какие данные или какие манипуляции могут быть выполнены клиентом через эту самую точку.
Есть и другие значимые компоненты АПИ. К ним относят запросы и ответы, методы и данные.
Запросы и ответы
Запросы и ответы – способы, с помощью которых допустима работа между клиентом и сервером. Они направляют с их помощью информацию и обмениваются ей.
Запрос – это сообщение, исходящее с клиентской стороны модели. Оно перенаправляется серверу для запроса определенных данных или выполнения тех или иных действий.
Ответ – сообщение, которое сервер формирует и направляет в отместку на запрос. Оно предусматривает данные, запрошенные ранее, или информацию о результате проделанной работы.
Аргументы и параметры
Методы API могут принимать и передавать параметры/аргументы. Они определяют условия работы с теми или иными операциями/запросами.
Параметры – это дополнительные сведения, передаваемые в API-запросе. Используются для настройки его работы и определения контекста запроса.
Аргументы – данные, которые нужно передавать через методы или функции API. Они нужны для непосредственного выполнения операций или запросов.
Протоколы
API использует в своей работе определенные протоколы передачи данных – набор правил и соглашений для информационного обмена между клиентом и сервером. Эти протоколы используются для обеспечения надежной и стандартизированной связи между различными системами, независимо от используемого языка программирования, платформы или архитектуры.
Данные и их форматы
Данные – это любая информация, передаваемая между клиентом и сервером через АПИ. Сюда можно отнести:
- изображения;
- аудиофайлы;
- видео;
- числовые значения;
- текст;
- иные формы информации.
АПИ также умеют определять форматы данных, с которыми будет осуществляться дальнейшая работа. Чаще всего приходится иметь дело с JSON, HTML или XML.
Формат данных используется для определения того, как информация будет упакована и представлена. Клиент и сервер заранее «договариваются» о форматах, чтобы передача цифровых материалов прошла успешно.
Виды
Разные проекты предусматривают разные виды API. Это связано с тем, что каждый тип рассматриваемого компонента предусматривает свои ключевые особенности работы. Для одних проектов на первом месте окажется надежность и совместимость с определенными экосистемами, а для других – скорость функционирования.
Web API
Так называются все APIs для взаимодействия между веб-сервисами через Интернет. С помощью них доступна передача данных и выполнение действий по протоколам HTTP(S). Представленные ниже интерфейсы относятся к Web API.
REST
REST API – архитектурный подход для формирования веб-сервисов. Он устанавливает ограничения устройства и функциональности программного интерфейса. Представляет собой наборы правил и принципов:
- Клиент-серверная архитектура. В этом случае приложение состоит из двух компонентов – клиента и сервера.
- Отсутствие состояния. Сервер не хранит данные о предыдущей работе с клиентом. Каждый запрос с клиентской стороны к серверной должен быть независимым (самодостаточным). В этом случае нагрузка на сервер будет снижена в несколько раз – ему не придется держать в памяти каждую сессию информационного обмена.
- Кэшируемость. За счет нее можно сохранять API-ответы для повторного использования без непосредственного выполнения запроса. Данный прием снижает задержку и нагрузку на сервер. Ответы REST API также должны указывать на возможность или невозможность кэшируемости клиентом.
- Единообразие интерфейса. REST должны предусматривать работу через единообразный интерфейс. Он упрощает взаимодействие между клиентами и серверами. В REST API это стандартные HTTP-методы, а также определенные соглашения об именовании ресурсов.
- Слои. Архитектура у рассматриваемого вида интерфейса «слоеная». Она включает в себя серверы, прокси, шлюзы, балансировщики нагрузки и иные вспомогательные системы. Именно поэтому клиентам никогда не удастся понять, напрямую они общаются с серверами или нет.
Еще один принцип REST – код по требованию. Он не является обязательным. Серверная сторона может отправлять коды, которые выполняются уже на стороне клиента. REST широко используется в веб-разработке для организации взаимодействия между клиентом и сервером.
SOAP
SOAP – строгий протокол обмена сообщениями по сети. Для их форматирования используется XML. А вот правила описания, обработки и передачи сообщений строго стандартизированы. Ключевой особенностью SOAP выступает высокий уровень безопасности. Он обеспечивается механизмами шифрования, аутентификации сообщений и управления транзакциями.
GraphQL
Это язык запроса для АПИ. Он позволяет клиентским сторонам запрашивать только те данные, которые нужны для дальнейшей работы. С помощью одного запроса GraphQL удается получить данные, которые в REST требовали бы нескольких запросов подряд.
RPC
RPC – протокол, с помощью которого возможен вызов функций приложениями на удаленных серверах. Так, если бы они выполнялись локально. RPC удаленно отправляет на сервер запрос с указанием метода и необходимых параметров. Ответом будет служить результат выполнения метода.
У RPC API много реализаций. В качестве примеров можно привести gRPC от Google или tRPC от TypeScript.
Как вызвать
API для дальнейшей работы в проекте должен быть вызван. Добиться результата можно несколькими способами:
- Напрямую. В этом случае система вызывает функции внутри себя и методы другой программы. Во второй ситуации приложение при работе способно отправлять запросы на получение данных из другого приложения. Метод также вызывается вручную. Это необходимо для проверки работоспособности системы без затрагивания графического интерфейса.
- Косвенно. В этом случае работа по обращению к рассматриваемому компоненту производится пользователем. Он делает это через графический интерфейс. В качестве примера стоит привести нажатие на кнопку «Создание новой вкладки» в браузере. Пользователь будет вызывать в API функции. Их результатом станет формирование новой вкладки.
С базовыми понятиями и особенностями работы программных интерфейсов ознакомиться удалось. Чтобы научиться создавать их самостоятельно и использовать в своих проектах, рекомендуется пройти дистанционные компьютерные курсы.
Хотите освоить современную IT-специальность? Огромный выбор курсов по востребованным IT-направлениям есть в Otus!
<!DOCTYPE html>
<html dir="ltr" lang="ru-RU">
<head>
<meta charset="UTF-8" />
<meta http-equiv="x-ua-compatible" content="ie=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="profile" href="http://gmpg.org/xfn/11" />
<title>API: введение для новичков OTUS</title>
<!-- All in One SEO 4.5.2.1 - aioseo.com -->
<meta name="description" content="Компьютеры и иные современные гаджеты – сложные устройства. В них должны взаимодействовать не только операционные системы и драйверы, но и приложения/сервисы. В противном случае устройство не сможет выполнять те или иные операции. Для реализации поставленной задачи используются системы API. Сегодня нужно будет познакомиться с ними получше. Предстоит не только разобраться в том, что собой представляет" />
<meta name="robots" content="max-image-preview:large" />
<link rel="canonical" href="https://otus.ru/journal/api-vvedenie-dlya-novichkov/" />
<meta name="generator" content="All in One SEO (AIOSEO) 4.5.2.1" />
<script type="application/ld+json" class="aioseo-schema">
{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/otus.ru\/journal\/api-vvedenie-dlya-novichkov\/#article","name":"API: \u0432\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043d\u043e\u0432\u0438\u0447\u043a\u043e\u0432 OTUS","headline":"API: \u0432\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043d\u043e\u0432\u0438\u0447\u043a\u043e\u0432","author":{"@id":"https:\/\/otus.ru\/journal\/author\/a-pavlenko\/#author"},"publisher":{"@id":"https:\/\/otus.ru\/journal\/#organization"},"image":{"@type":"ImageObject","url":"https:\/\/otus.ru\/journal\/wp-content\/uploads\/2024\/10\/oj-1080x720-2024-10-20T231703.864.jpg","width":2245,"height":1587},"datePublished":"2024-10-20T20:17:18+00:00","dateModified":"2024-10-20T20:17:21+00:00","inLanguage":"ru-RU","mainEntityOfPage":{"@id":"https:\/\/otus.ru\/journal\/api-vvedenie-dlya-novichkov\/#webpage"},"isPartOf":{"@id":"https:\/\/otus.ru\/journal\/api-vvedenie-dlya-novichkov\/#webpage"},"articleSection":"\u041f\u043e\u043b\u0435\u0437\u043d\u043e\u0435, API, \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435"},{"@type":"BreadcrumbList","@id":"https:\/\/otus.ru\/journal\/api-vvedenie-dlya-novichkov\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/otus.ru\/journal\/#listItem","position":1,"name":"\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430","item":"https:\/\/otus.ru\/journal\/","nextItem":"https:\/\/otus.ru\/journal\/api-vvedenie-dlya-novichkov\/#listItem"},{"@type":"ListItem","@id":"https:\/\/otus.ru\/journal\/api-vvedenie-dlya-novichkov\/#listItem","position":2,"name":"API: \u0432\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043d\u043e\u0432\u0438\u0447\u043a\u043e\u0432","previousItem":"https:\/\/otus.ru\/journal\/#listItem"}]},{"@type":"Organization","@id":"https:\/\/otus.ru\/journal\/#organization","name":"\u041e\u0442\u0443\u0441 \u043e\u043d\u043b\u0430\u0439\u043d-\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435","url":"https:\/\/otus.ru\/journal\/","sameAs":["https:\/\/www.youtube.com\/channel\/UCetgtvy93o3i3CvyGXKFU3g"],"contactPoint":{"@type":"ContactPoint","telephone":"+74999389202","contactType":"Customer Support"}},{"@type":"Person","@id":"https:\/\/otus.ru\/journal\/author\/a-pavlenko\/#author","url":"https:\/\/otus.ru\/journal\/author\/a-pavlenko\/","name":"A. Pavlenko","image":{"@type":"ImageObject","@id":"https:\/\/otus.ru\/journal\/api-vvedenie-dlya-novichkov\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/d4c499a104d7c2522fa41f89e6819499?s=96&d=mm&r=g","width":96,"height":96,"caption":"A. Pavlenko"}},{"@type":"WebPage","@id":"https:\/\/otus.ru\/journal\/api-vvedenie-dlya-novichkov\/#webpage","url":"https:\/\/otus.ru\/journal\/api-vvedenie-dlya-novichkov\/","name":"API: \u0432\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043d\u043e\u0432\u0438\u0447\u043a\u043e\u0432 OTUS","description":"\u041a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u044b \u0438 \u0438\u043d\u044b\u0435 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0433\u0430\u0434\u0436\u0435\u0442\u044b \u2013 \u0441\u043b\u043e\u0436\u043d\u044b\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430. \u0412 \u043d\u0438\u0445 \u0434\u043e\u043b\u0436\u043d\u044b \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0438 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u044b, \u043d\u043e \u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\/\u0441\u0435\u0440\u0432\u0438\u0441\u044b. \u0412 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u043d\u0435 \u0441\u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0442\u0435 \u0438\u043b\u0438 \u0438\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438. \u0414\u043b\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u044b API. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u043d\u0438\u043c\u0438 \u043f\u043e\u043b\u0443\u0447\u0448\u0435. \u041f\u0440\u0435\u0434\u0441\u0442\u043e\u0438\u0442 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0441\u043e\u0431\u043e\u0439 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442","inLanguage":"ru-RU","isPartOf":{"@id":"https:\/\/otus.ru\/journal\/#website"},"breadcrumb":{"@id":"https:\/\/otus.ru\/journal\/api-vvedenie-dlya-novichkov\/#breadcrumblist"},"author":{"@id":"https:\/\/otus.ru\/journal\/author\/a-pavlenko\/#author"},"creator":{"@id":"https:\/\/otus.ru\/journal\/author\/a-pavlenko\/#author"},"image":{"@type":"ImageObject","url":"https:\/\/otus.ru\/journal\/wp-content\/uploads\/2024\/10\/oj-1080x720-2024-10-20T231703.864.jpg","@id":"https:\/\/otus.ru\/journal\/api-vvedenie-dlya-novichkov\/#mainImage","width":2245,"height":1587},"primaryImageOfPage":{"@id":"https:\/\/otus.ru\/journal\/api-vvedenie-dlya-novichkov\/#mainImage"},"datePublished":"2024-10-20T20:17:18+00:00","dateModified":"2024-10-20T20:17:21+00:00"},{"@type":"WebSite","@id":"https:\/\/otus.ru\/journal\/#website","url":"https:\/\/otus.ru\/journal\/","name":"OTUS JOURNAL","description":"Blog about IT","inLanguage":"ru-RU","publisher":{"@id":"https:\/\/otus.ru\/journal\/#organization"}}]}
</script>
<!-- All in One SEO -->
<link rel='dns-prefetch' href='//otus.ru' />
<link rel='dns-prefetch' href='//fonts.googleapis.com' />
<link rel='stylesheet' id='wp-block-library-css' href='https://otus.ru/journal/wp-includes/css/dist/block-library/style.min.css?ver=6.4.7' type='text/css' media='all' />
<style id='classic-theme-styles-inline-css' type='text/css'>
/*! This file is auto-generated */
.wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none}
</style>
<style id='global-styles-inline-css' type='text/css'>
body{--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgba(252,185,0,1) 0%,rgba(255,105,0,1) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgba(255,105,0,1) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgba(255, 255, 255, 1), 6px 6px rgba(0, 0, 0, 1);--wp--preset--shadow--crisp: 6px 6px 0px rgba(0, 0, 0, 1);}:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}body .is-layout-flex{display: flex;}body .is-layout-flex{flex-wrap: wrap;align-items: center;}body .is-layout-flex > *{margin: 0;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;}
.wp-block-navigation a:where(:not(.wp-element-button)){color: inherit;}
:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}
:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}
.wp-block-pullquote{font-size: 1.5em;line-height: 1.6;}
</style>
<link rel='stylesheet' id='wbcr-comments-plus-url-span-css' href='https://otus.ru/journal/wp-content/plugins/clearfy/components/comments-plus/assets/css/url-span.css?ver=2.2.0' type='text/css' media='all' />
<link rel='stylesheet' id='wpel-style-css' href='https://otus.ru/journal/wp-content/plugins/wp-external-links/public/css/wpel.css?ver=2.59' type='text/css' media='all' />
<link rel='stylesheet' id='ez-toc-css' href='https://otus.ru/journal/wp-content/plugins/easy-table-of-contents/assets/css/screen.min.css?ver=2.0.61' type='text/css' media='all' />
<style id='ez-toc-inline-css' type='text/css'>
div#ez-toc-container .ez-toc-title {font-size: 120%;}div#ez-toc-container .ez-toc-title {font-weight: 500;}div#ez-toc-container ul li {font-size: 95%;}div#ez-toc-container nav ul ul li {font-size: 90%;}
.ez-toc-container-direction {direction: ltr;}.ez-toc-counter ul{counter-reset: item ;}.ez-toc-counter nav ul li a::before {content: counters(item, ".", decimal) ". ";display: inline-block;counter-increment: item;flex-grow: 0;flex-shrink: 0;margin-right: .2em; float: left; }.ez-toc-widget-direction {direction: ltr;}.ez-toc-widget-container ul{counter-reset: item ;}.ez-toc-widget-container nav ul li a::before {content: counters(item, ".", decimal) ". ";display: inline-block;counter-increment: item;flex-grow: 0;flex-shrink: 0;margin-right: .2em; float: left; }
</style>
<link rel='stylesheet' id='contentberg-fonts-css' href='https://fonts.googleapis.com/css?family=Roboto%3A400%2C500%2C700%7CPT+Serif%3A400%2C400i%2C600%7CIBM+Plex+Serif%3A500' type='text/css' media='all' />
<link rel='stylesheet' id='contentberg-core-css' href='https://otus.ru/journal/wp-content/themes/contentberg/style.css?ver=1.8.3' type='text/css' media='all' />
<link rel='stylesheet' id='contentberg-lightbox-css' href='https://otus.ru/journal/wp-content/themes/contentberg/css/lightbox.css?ver=1.8.3' type='text/css' media='all' />
<link rel='stylesheet' id='font-awesome-css' href='https://otus.ru/journal/wp-content/themes/contentberg/css/fontawesome/css/font-awesome.min.css?ver=1.8.3' type='text/css' media='all' />
<script type="text/javascript" id="breeze-prefetch-js-extra">
/* <![CDATA[ */
var breeze_prefetch = {"local_url":"https:\/\/otus.ru\/journal","ignore_remote_prefetch":"1","ignore_list":["\/wp-admin\/"]};
/* ]]> */
</script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/breeze/assets/js/js-front-end/breeze-prefetch-links.min.js" id="breeze-prefetch-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-includes/js/jquery/jquery.min.js" id="jquery-core-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-includes/js/jquery/jquery-migrate.min.js" id="jquery-migrate-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/lazysizes.js" id="lazysizes-js"></script>
<link rel="https://api.w.org/" href="https://otus.ru/journal/wp-json/" /><link rel="alternate" type="application/json" href="https://otus.ru/journal/wp-json/wp/v2/posts/11083" /><link rel='shortlink' href='https://otus.ru/journal/?p=11083' />
<link rel="alternate" type="application/json+oembed" href="https://otus.ru/journal/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fotus.ru%2Fjournal%2Fapi-vvedenie-dlya-novichkov%2F" />
<link rel="alternate" type="text/xml+oembed" href="https://otus.ru/journal/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fotus.ru%2Fjournal%2Fapi-vvedenie-dlya-novichkov%2F&format=xml" />
<script>var Sphere_Plugin = {"ajaxurl":"https:\/\/otus.ru\/journal\/wp-admin\/admin-ajax.php"};</script><link rel="icon" href="https://otus.ru/journal/wp-content/uploads/2020/11/cropped-OTUS_logo_OTUS-COMP-LOGO-WHITE-1-32x32.png" sizes="32x32" />
<link rel="icon" href="https://otus.ru/journal/wp-content/uploads/2020/11/cropped-OTUS_logo_OTUS-COMP-LOGO-WHITE-1-192x192.png" sizes="192x192" />
<link rel="apple-touch-icon" href="https://otus.ru/journal/wp-content/uploads/2020/11/cropped-OTUS_logo_OTUS-COMP-LOGO-WHITE-1-180x180.png" />
<meta name="msapplication-TileImage" content="https://otus.ru/journal/wp-content/uploads/2020/11/cropped-OTUS_logo_OTUS-COMP-LOGO-WHITE-1-270x270.png" />
<style type="text/css" id="wp-custom-css">
#menu-item-10406 .wpel-icon {
display: none;
}
#menu-item-10407 .wpel-icon {
display: none;
}
.otus-login-site a .wpel-icon {
display: none;
}
.menu-menju-navykov-container a .wpel-icon {
display: none;
}
.otus-login-site a
{
background: #ffd709;
border-radius: 12px;
color: #0f0f10;
font-size: 14px;
font-weight: 700;
line-height: 20px;
display: block;
text-align: center;
padding: 8px 25px;
}
.main-footer.dark {
background: linear-gradient(90deg, #a64fc5, #4f54e6);
border-color: transparent;
}
.main-footer.bold .copyright {
color: #fff;
}
.main-footer.bold .to-top i {
color: #fff;
}
.main-footer.bold .back-to-top {
color: #fff;
}
.nav__scroll {
overflow-x: auto;
-webkit-overflow-scrolling: touch;
}
.scrollable-menu .menu {
display: flex;
}
.nav__scroll
{
background: linear-gradient(90deg, #a64fc5, #4f54e6);
}
.scrollable-menu .menu .menu-item {
flex: 0 0 auto;
padding: 15px 15px;
}
.scrollable-menu .menu .menu-item a {
color: #fff;
}
.nav__scroll::-webkit-scrollbar{background-color:#fff;height:5px;}
.nav__scroll::-webkit-scrollbar-thumb{background-color:#dcdcdc;}
.nav__scroll::-webkit-scrollbar-track{-webkit-border-radius:0;border-radius:0;background-color:#fff;}/
body {
min-width: 320px;
}
.banner-click img {
margin: 0 auto;
display: block;
}
.banner-click {
cursor: pointer;
}
.banner-footer-area {
margin-bottom: 20px;
}
.banner-left-area {
margin-top: 40px;
} </style>
<!--Start VDZ Yandex Metrika Plugin-->
<!-- Yandex.Metrika counter --><script type="text/javascript" >(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");ym(34531570, "init", {clickmap:true, trackLinks:true, accurateTrackBounce:true, webvisor:true, trackHash:true, ecommerce:"dataLayer"});</script>
<noscript><div><img src="https://mc.yandex.ru/watch/34531570" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
<!-- /Yandex.Metrika counter --><!--START ADD EVENTS FROM CF7--><script type='text/javascript'>document.addEventListener( 'wpcf7submit', function( event ) {
//event.detail.contactFormId;
if(ym){
//console.log(event.detail);
ym(34531570, 'reachGoal', 'VDZ_SEND_CONTACT_FORM_7');
ym(34531570, 'params', {
page_url: window.location.href,
status: event.detail.status,
locale: event.detail.contactFormLocale,
form_id: event.detail.contactFormId,
});
}
}, false );
</script><!--END ADD EVENTS FROM CF7-->
<!--End VDZ Yandex Metrika Plugin-->
</head>
<body class="post-template-default single single-post postid-11083 single-format-standard right-sidebar lazy-normal has-lb">
<div class="main-wrap">
<header id="main-head" class="main-head head-nav-below has-search-modal simple simple-boxed">
<div class="inner inner-head" data-sticky-bar="0">
<div class="wrap cf wrap-head">
<div class="left-contain">
<span class="mobile-nav"><i class="fa fa-bars"></i></span>
<div class="title">
<a href="https://otus.ru/journal/" title="OTUS JOURNAL" rel="home" data-wpel-link="internal">
<span class="text-logo"><img src="/journal/wp-content/themes/contentberg/img/logo_site.svg" alt="OTUS JOURNAL"></span>
</a>
</div>
</div>
<div class="navigation-wrap inline">
<nav class="navigation inline simple light" data-sticky-bar="0">
<div class="menu-rubriki-container"><ul id="menu-rubriki" class="menu"><li id="menu-item-109" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-cat-1 menu-item-109"><a href="https://otus.ru/journal/category/pro-it/" data-wpel-link="internal"><span>Про IT</span></a></li>
<li id="menu-item-113" class="menu-item menu-item-type-taxonomy menu-item-object-category current-post-ancestor current-menu-parent current-post-parent menu-cat-4 menu-item-113"><a href="https://otus.ru/journal/category/polza/" data-wpel-link="internal"><span>Полезное</span></a></li>
<li id="menu-item-114" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-cat-3 menu-item-114"><a href="https://otus.ru/journal/category/lifestyle/" data-wpel-link="internal"><span>Лайфстайл</span></a></li>
<li id="menu-item-10406" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10406"><a href="https://otus.ru/catalog/courses" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right"><span>Обучение</span><span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10407" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10407"><a href="https://otus.ru/about" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right"><span>Информация</span><span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
</ul></div> </nav>
</div>
<div class="actions">
<div class="otus-login-site">
<a href="https://otus.ru/login/" target="_blank" data-wpel-link="external" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Войти<span class="wpel-icon wpel-image wpel-icon-6"></span></a>
</div>
<a href="#" title="Search" class="search-link"><i class="fa fa-search"></i></a>
</div>
</div>
</div>
</header> <!-- .main-head -->
<div class="nav nav_disable nav_colored nav_transparent course-categories__nav nav__scroll ">
<div class="container wrap">
<div class="links inline simple light scrollable-menu">
<div class="menu-menju-navykov-container"><ul id="menu-menju-navykov" class="menu"><li id="menu-item-10413" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10413"><a href="https://otus.ru/categories/programming/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Программирование<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10414" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10414"><a href="https://otus.ru/categories/architecture/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Архитектура<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10415" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10415"><a href="https://otus.ru/categories/operations/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Инфраструктура<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10416" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10416"><a href="https://otus.ru/categories/information-security-courses/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Безопасность<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10417" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10417"><a href="https://otus.ru/categories/data-science/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Data Science<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10418" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10418"><a href="https://otus.ru/categories/gamedev/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">GameDev<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10419" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10419"><a href="https://otus.ru/categories/marketing-business/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Управление<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10420" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10420"><a href="https://otus.ru/categories/analytics/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Аналитика и анализ<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10421" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10421"><a href="https://otus.ru/categories/testing/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Тестирование<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
</ul></div> </div>
</div>
</div>
<div class="main wrap">
<div class="ts-row cf">
<div class="col-8 main-content cf">
<article id="post-11083" class="the-post post-11083 post type-post status-publish format-standard has-post-thumbnail category-polza tag-api tag-programmirovanie">
<header class="post-header the-post-header cf">
<div class="post-meta the-post-meta">
<span class="post-cat">
<a href="https://otus.ru/journal/category/polza/" class="category" data-wpel-link="internal">Полезное</a>
</span>
<h1 class="post-title">
API: введение для новичков
</h1>
<a href="https://otus.ru/journal/api-vvedenie-dlya-novichkov/" class="date-link" data-wpel-link="internal"><time class="post-date">20 октября, 2024</time></a>
</div>
<div class="featured">
<a href="https://otus.ru/journal/wp-content/uploads/2024/10/oj-1080x720-2024-10-20T231703.864.jpg" class="image-link" data-wpel-link="internal"><img width="770" height="515" src="data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20770%20515%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3C%2Fsvg%3E" class="attachment-contentberg-main size-contentberg-main lazyload wp-post-image" alt="API: введение для новичков" title="API: введение для новичков" decoding="async" fetchpriority="high" data-srcset="https://otus.ru/journal/wp-content/uploads/2024/10/oj-1080x720-2024-10-20T231703.864-770x515.jpg 770w, https://otus.ru/journal/wp-content/uploads/2024/10/oj-1080x720-2024-10-20T231703.864-270x180.jpg 270w" data-src="https://otus.ru/journal/wp-content/uploads/2024/10/oj-1080x720-2024-10-20T231703.864-770x515.jpg" data-sizes="(max-width: 770px) 100vw, 770px" /> </a>
</div>
</header><!-- .post-header -->
<div class="post-content description cf entry-content content-normal">
<div id="ez-toc-container" class="ez-toc-v2_0_61 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction">
<div class="ez-toc-title-container">
<p class="ez-toc-title " >Содержание</p>
<span class="ez-toc-title-toggle"><a href="#" class="ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle" aria-label="Toggle Table of Content"><span class="ez-toc-js-icon-con"><span class=""><span class="eztoc-hide" style="display:none;">Toggle</span><span class="ez-toc-icon-toggle-span"><svg style="fill: #999;color:#999" xmlns="http://www.w3.org/2000/svg" class="list-377408" width="20px" height="20px" viewBox="0 0 24 24" fill="none"><path d="M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z" fill="currentColor"></path></svg><svg style="fill: #999;color:#999" class="arrow-unsorted-368013" xmlns="http://www.w3.org/2000/svg" width="10px" height="10px" viewBox="0 0 24 24" version="1.2" baseProfile="tiny"><path d="M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z"/></svg></span></span></span></a></span></div>
<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-1" href="#%D0%9E%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5" title="Определение">Определение</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-2" href="#%D0%93%D0%B4%D0%B5_%D0%B2%D1%81%D1%82%D1%80%D0%B5%D1%87%D0%B0%D0%B5%D1%82%D1%81%D1%8F" title="Где встречается">Где встречается</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-3" href="#%D0%9F%D0%BE%D1%87%D0%B5%D0%BC%D1%83_API_%E2%80%93_%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81" title="Почему API – интерфейс">Почему API – интерфейс</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-4" href="#%D0%9F%D1%80%D0%B5%D0%B8%D0%BC%D1%83%D1%89%D0%B5%D1%81%D1%82%D0%B2%D0%B0_%D0%B8_%D0%BD%D0%B5%D0%B4%D0%BE%D1%81%D1%82%D0%B0%D1%82%D0%BA%D0%B8" title="Преимущества и недостатки">Преимущества и недостатки</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-5" href="#%D0%A1%D0%BE%D1%81%D1%82%D0%B0%D0%B2_%D0%B8_%D0%BF%D1%80%D0%B8%D0%BD%D1%86%D0%B8%D0%BF_%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B" title="Состав и принцип работы">Состав и принцип работы</a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-6" href="#%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81" title="Интерфейс">Интерфейс</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-7" href="#%D0%9A%D0%BE%D0%BD%D0%B5%D1%87%D0%BD%D1%8B%D0%B5_%D1%82%D0%BE%D1%87%D0%BA%D0%B8" title="Конечные точки">Конечные точки</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-8" href="#%D0%97%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%B8_%D0%BE%D1%82%D0%B2%D0%B5%D1%82%D1%8B" title="Запросы и ответы">Запросы и ответы</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-9" href="#%D0%90%D1%80%D0%B3%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D1%8B_%D0%B8_%D0%BF%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D1%8B" title="Аргументы и параметры">Аргументы и параметры</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-10" href="#%D0%9F%D1%80%D0%BE%D1%82%D0%BE%D0%BA%D0%BE%D0%BB%D1%8B" title="Протоколы">Протоколы</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-11" href="#%D0%94%D0%B0%D0%BD%D0%BD%D1%8B%D0%B5_%D0%B8_%D0%B8%D1%85_%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%82%D1%8B" title="Данные и их форматы">Данные и их форматы</a></li></ul></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-12" href="#%D0%92%D0%B8%D0%B4%D1%8B" title="Виды">Виды</a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-13" href="#Web_API" title="Web API">Web API</a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class="ez-toc-link ez-toc-heading-14" href="#REST" title="REST">REST</a></li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class="ez-toc-link ez-toc-heading-15" href="#SOAP" title="SOAP">SOAP</a></li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class="ez-toc-link ez-toc-heading-16" href="#GraphQL" title="GraphQL">GraphQL</a></li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class="ez-toc-link ez-toc-heading-17" href="#RPC" title="RPC">RPC</a></li></ul></li></ul></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-18" href="#%D0%9A%D0%B0%D0%BA_%D0%B2%D1%8B%D0%B7%D0%B2%D0%B0%D1%82%D1%8C" title="Как вызвать">Как вызвать</a></li></ul></nav></div>
<h1 class="wp-block-heading"></h1>
<p>Компьютеры и иные современные гаджеты – сложные устройства. В них должны взаимодействовать не только операционные системы и драйверы, но и приложения/сервисы. В противном случае устройство не сможет выполнять те или иные операции.</p>
<p>Для реализации поставленной задачи используются системы API. Сегодня нужно будет познакомиться с ними получше. Предстоит не только разобраться в том, что собой представляет API, но и изучить принципы его работы. А еще – изучить разновидности API и ключевые особенности рассматриваемого компонента. Дополнительно необходимо ознакомиться со способами его вызова.</p>
<p>Предложенная информация рассчитана на широкий пользовательский круг. Она пригодится как IT-специалистам (особенно системным администраторам и веб-разработчикам), так и обычным ПК-пользователям.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9E%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5"></span>Определение<span class="ez-toc-section-end"></span></h2>
<p>API (Application Programming Interface или просто «АПИ») – это интерфейс программирования приложения. Он представляет собой некое описание способов взаимодействия одной программы на устройстве с другими. Это полная противоположность пользовательскому интерфейсу, который используется для взаимодействия человека с тем или иным приложением.</p>
<p>API чаще всего выступает в качестве описания разнообразных Интернет-протоколов, программных каркасов (фреймворков), а также стандартов вызовов функций имеющейся операционной системы. Этот компонент может быть реализован отдельной библиотекой или сервисом. Используется преимущественно разработчиками для написания всевозможных приложений.</p>
<p>API – это способ взаимодействия программного кода с набором каких-то программных компонентов, с помощью которых одна программа (бот/сайт или другой контент) может использовать другую программу.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%93%D0%B4%D0%B5_%D0%B2%D1%81%D1%82%D1%80%D0%B5%D1%87%D0%B0%D0%B5%D1%82%D1%81%D1%8F"></span>Где встречается<span class="ez-toc-section-end"></span></h2>
<p>Системы API встречаются практически повсеместно. С ними можно столкнуться в:</p>
<ol>
<li>Языках программирования. В них API помогает функциям корректно работать и общаться друг с другом. Вызывающая функция должна в обязательном порядке соблюдать тип данных и очередность параметров вызываемой функции.</li>
<li>Операционных системах. Тут API работает в качестве своеобразного помощника. С ним программы могут получать данные из памяти и менять системные настройки. Именно поэтому для разработки проектов под ту или иную операционную систему, нужно тщательно познакомиться с ее API.</li>
<li>Веб-сервисах и сайтах. С помощью рассматриваемого компонента сервисы и веб-страницы общаются друг с другом. Если API открытый, то официальная документация по работе с ним публикуется создателями сервиса-источника.</li>
</ol>
<p>Также программным интерфейсом могут описывать:</p>
<ul>
<li>самостоятельные части программного обеспечения;</li>
<li>приложения в полном объеме;</li>
<li>полноценные серверы;</li>
<li>фрагменты программного обеспечения, используемые для реализации тех или иных опций.</li>
</ul>
<p>Несмотря на то, что изучаемое понятие является достаточно широким и многогранным, оно обычно встречается в веб-сервисах и на сайтах.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9F%D0%BE%D1%87%D0%B5%D0%BC%D1%83_API_%E2%80%93_%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81"></span>Почему API – интерфейс<span class="ez-toc-section-end"></span></h2>
<p>Интерфейс – это граница между двумя функциональными системами. Прослойка, на которой происходит взаимодействие сервисов/систем, а также обмен информацией. Процессы внутри каждой системы скрыты друг от друга.</p>
<p>С помощью интерфейсов получается задействовать возможности работы разных сервисов, не думая о том, как они обрабатывают имеющиеся запросы, а также из каких компонентов они состоят.</p>
<p>В качестве примера стоит привести обычный телефонный звонок. Чтобы его совершить, человеку не нужно знать, как осуществляется работа смартфона и каким образом он обрабатывает нажатия на тачскрин. Достаточно запомнить, что в устройстве имеется кнопка, которая всегда будет возвращать один и тот же результат в ответ на конкретные манипуляции (действия).</p>
<p>Аналогично ситуация обстоит с работой API. С помощью его вызова удается выполнять те или иные функции программы, не разбираясь в том, как функционирует самое приложение. Именно поэтому рассматриваемый компонент носит название интерфейса.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9F%D1%80%D0%B5%D0%B8%D0%BC%D1%83%D1%89%D0%B5%D1%81%D1%82%D0%B2%D0%B0_%D0%B8_%D0%BD%D0%B5%D0%B4%D0%BE%D1%81%D1%82%D0%B0%D1%82%D0%BA%D0%B8"></span>Преимущества и недостатки<span class="ez-toc-section-end"></span></h2>
<p>Работа с программными интерфейсами имеет как сильные, так и слабые стороны. О них должен помнить каждый IT-специалист, чтобы не столкнуться с проблемами в процессе разрешения различных задач.</p>
<p>К преимуществам работы программных интерфейсов можно отнести:</p>
<ol>
<li>Стандартизацию интерфейсов. API предоставляют стандартизированные интерфейсы, благодаря которым взаимодействие между элементами становится более прозрачным и простым.</li>
<li>Упрощение интеграции. Изучаемый элемент дает возможность интегрировать разнообразные системы и их сервисы. Внутреннюю реализацию каждой из них знать и понимать нет никакой необходимости.</li>
<li>Гибкость и расширяемость. При помощи использования API разработчики способны без затруднений добавлять новые функциональные возможности и сервисы. Это положительно сказывается на функциях итоговых приложений.</li>
<li>Упрощение пользовательского опыта. Через APIs удается формировать персонализированные и адаптивные приложения. Все это положительно сказывается на пользовательском опыте.</li>
<li>Эффективность при использовании ресурсов конечного устройства. Изучаемые составляющие дают возможность рационально и эффективно задействовать ресурсы. Это связано с тем, что с помощью API можно многократно использовать функциональность и разнообразные данные.</li>
</ol>
<p>Недостатки у работы с API тоже есть. К ним относят:</p>
<ol>
<li>Контроль за безопасностью. Сервисы и программные интерфейсы, которые недостаточно защищены, могут стать уязвимыми к атакам. Из-за этого приходится обеспечивать дополнительную безопасность и надежность при разработке API.</li>
<li>Наличие зависимости от внешних сервисов. При использовании изучаемого элемента он становится зависимым от сторонних сервисов и приложений. Это может доставлять некоторые проблемы, если они будут не доступны, а также при изменении интерфейса.</li>
<li>Сложности в плане поддержки и обновлений. Изменения – это не всегда легко и хорошо. Они могут требовать обновления клиентских программ. Для API такая работа нередко оказывается дорогостоящим процессом.</li>
<li>Ограничения в плане использования. Существуют АПИ, которые могут предусматривать ограничения по количеству запросов, объему передаваемых данных, доступу к тем или иным функциям. Придется учитывать соответствующие особенности в процессе разработки собственных проектов.</li>
</ol>
<p>Теперь можно разобраться с составом API. Он включает в себя множество элементов, каждый из которых выполняет строго определенные функции.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%A1%D0%BE%D1%81%D1%82%D0%B0%D0%B2_%D0%B8_%D0%BF%D1%80%D0%B8%D0%BD%D1%86%D0%B8%D0%BF_%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B"></span>Состав и принцип работы<span class="ez-toc-section-end"></span></h2>
<p>Системы API включают в себя множество компонентов для нормальной работы. Все они отвечают за определенные функциональные возможности.</p>
<p>В состав АПИ входят клиент и сервер. Они используются для работы и взаимодействия между разнообразными системными элементами. Клиенты получают возможность задействовать функциональность и данные, предоставляемые сервером.</p>
<p>Здесь:</p>
<ol>
<li>Сервер – это элемент, который используется для хранения данных. Он также обрабатывает запросы и возвращает ответы клиентской стороне. Серверы обычно работают на постоянной основе. Они ожидают запросов от клиентов и обеспечивают им доступ к функциональным возможностям, а также данным посредством APIs.</li>
<li>Клиент – это программа или устройство, которое отправляет запросы на серверную часть. Она же будет получать от него сформированные ответы. Клиент будет направлять HTTP-запросы (и другие команды) к серверу API, указывая, какие действия и параметры необходимы. После получения ответа – занимается его обработкой.</li>
</ol>
<p>Между клиентом и сервером работа осуществляется через определенные протоколы. В качестве примера можно привести HTTPS.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81"></span>Интерфейс<span class="ez-toc-section-end"></span></h3>
<p>В системах API интерфейс – это специальный набор методов, протоколов и форматов, который определяет способы взаимодействия между разными программными элементами. Он выступает в качестве контракта между разработчиками приложений. Указывает, работа с какими операциями допустима в проектах. А еще – как осуществляется обмен данными через API между приложениями.</p>
<p>Интерфейс АПИ – это своеобразное «окно». Через него человек будет направлять запросы на серверы и получать данные от них для выполнения разнообразных манипуляций в программе или на веб-странице.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9A%D0%BE%D0%BD%D0%B5%D1%87%D0%BD%D1%8B%D0%B5_%D1%82%D0%BE%D1%87%D0%BA%D0%B8"></span>Конечные точки<span class="ez-toc-section-end"></span></h3>
<p>Конечные точки – это EndPoints. Они представляют собой конкретные адреса (URL). С их помощью становится доступна работы клиента с сервером. Через конечные точки клиент способен отправлять запросы для выполнения тех или иных операций, а также для получения некоторых данных от серверной стороны.</p>
<p>Здесь необходимо запомнить следующее:</p>
<ol>
<li>Каждая конечная точка идентифицирует определенный ресурс или действие, к которому клиент хочет обеспечить себе доступ. Это может быть информация о заказах, пользователях, продуктах и так далее.</li>
<li>Каждый EndPoint обладает уникальным URL. Соответствующий адрес используется для обращения клиента к «точке». Обычно он включает в себя базовый адрес АПИ, после которого указывается дополнительный путь или идентификатор ресурса.</li>
<li>EndPoints определяют то, какие методы работают (поддерживаются) для взаимодействия с ними.</li>
<li>Каждая конечная точка определяет, какие данные или какие манипуляции могут быть выполнены клиентом через эту самую точку.</li>
</ol>
<p>Есть и другие значимые компоненты АПИ. К ним относят запросы и ответы, методы и данные.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%97%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%B8_%D0%BE%D1%82%D0%B2%D0%B5%D1%82%D1%8B"></span>Запросы и ответы<span class="ez-toc-section-end"></span></h3>
<p>Запросы и ответы – способы, с помощью которых допустима работа между клиентом и сервером. Они направляют с их помощью информацию и обмениваются ей.</p>
<p>Запрос – это сообщение, исходящее с клиентской стороны модели. Оно перенаправляется серверу для запроса определенных данных или выполнения тех или иных действий.</p>
<p>Ответ – сообщение, которое сервер формирует и направляет в отместку на запрос. Оно предусматривает данные, запрошенные ранее, или информацию о результате проделанной работы.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%90%D1%80%D0%B3%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D1%8B_%D0%B8_%D0%BF%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D1%8B"></span>Аргументы и параметры<span class="ez-toc-section-end"></span></h3>
<p>Методы API могут принимать и передавать параметры/аргументы. Они определяют условия работы с теми или иными операциями/запросами.</p>
<p>Параметры – это дополнительные сведения, передаваемые в API-запросе. Используются для настройки его работы и определения контекста запроса.</p>
<p>Аргументы – данные, которые нужно передавать через методы или функции API. Они нужны для непосредственного выполнения операций или запросов.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9F%D1%80%D0%BE%D1%82%D0%BE%D0%BA%D0%BE%D0%BB%D1%8B"></span>Протоколы<span class="ez-toc-section-end"></span></h3>
<p>API использует в своей работе определенные протоколы передачи данных – набор правил и соглашений для информационного обмена между клиентом и сервером. Эти протоколы используются для обеспечения надежной и стандартизированной связи между различными системами, независимо от используемого языка программирования, платформы или архитектуры.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%94%D0%B0%D0%BD%D0%BD%D1%8B%D0%B5_%D0%B8_%D0%B8%D1%85_%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%82%D1%8B"></span>Данные и их форматы<span class="ez-toc-section-end"></span></h3>
<p>Данные – это любая информация, передаваемая между клиентом и сервером через АПИ. Сюда можно отнести:</p>
<ul>
<li>изображения;</li>
<li>аудиофайлы;</li>
<li>видео;</li>
<li>числовые значения;</li>
<li>текст;</li>
<li>иные формы информации.</li>
</ul>
<p>АПИ также умеют определять форматы данных, с которыми будет осуществляться дальнейшая работа. Чаще всего приходится иметь дело с JSON, HTML или XML.</p>
<p>Формат данных используется для определения того, как информация будет упакована и представлена. Клиент и сервер заранее «договариваются» о форматах, чтобы передача цифровых материалов прошла успешно.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%92%D0%B8%D0%B4%D1%8B"></span>Виды<span class="ez-toc-section-end"></span></h2>
<p>Разные проекты предусматривают разные виды API. Это связано с тем, что каждый тип рассматриваемого компонента предусматривает свои ключевые особенности работы. Для одних проектов на первом месте окажется надежность и совместимость с определенными экосистемами, а для других – скорость функционирования.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="Web_API"></span>Web API<span class="ez-toc-section-end"></span></h3>
<p>Так называются все APIs для взаимодействия между веб-сервисами через Интернет. С помощью них доступна передача данных и выполнение действий по протоколам HTTP(S). Представленные ниже интерфейсы относятся к Web API.</p>
<h4 class="wp-block-heading"><span class="ez-toc-section" id="REST"></span><em>REST</em><span class="ez-toc-section-end"></span></h4>
<p>REST API – архитектурный подход для формирования веб-сервисов. Он устанавливает ограничения устройства и функциональности программного интерфейса. Представляет собой наборы правил и принципов:</p>
<ol>
<li>Клиент-серверная архитектура. В этом случае приложение состоит из двух компонентов – клиента и сервера.</li>
<li>Отсутствие состояния. Сервер не хранит данные о предыдущей работе с клиентом. Каждый запрос с клиентской стороны к серверной должен быть независимым (самодостаточным). В этом случае нагрузка на сервер будет снижена в несколько раз – ему не придется держать в памяти каждую сессию информационного обмена.</li>
<li>Кэшируемость. За счет нее можно сохранять API-ответы для повторного использования без непосредственного выполнения запроса. Данный прием снижает задержку и нагрузку на сервер. Ответы REST API также должны указывать на возможность или невозможность кэшируемости клиентом.</li>
<li>Единообразие интерфейса. REST должны предусматривать работу через единообразный интерфейс. Он упрощает взаимодействие между клиентами и серверами. В REST API это стандартные HTTP-методы, а также определенные соглашения об именовании ресурсов.</li>
<li>Слои. Архитектура у рассматриваемого вида интерфейса «слоеная». Она включает в себя серверы, прокси, шлюзы, балансировщики нагрузки и иные вспомогательные системы. Именно поэтому клиентам никогда не удастся понять, напрямую они общаются с серверами или нет.</li>
</ol>
<p>Еще один принцип REST – код по требованию. Он не является обязательным. Серверная сторона может отправлять коды, которые выполняются уже на стороне клиента. REST широко используется в веб-разработке для организации взаимодействия между клиентом и сервером.</p>
<h4 class="wp-block-heading"><span class="ez-toc-section" id="SOAP"></span><em>SOAP</em><span class="ez-toc-section-end"></span></h4>
<p>SOAP – строгий протокол обмена сообщениями по сети. Для их форматирования используется XML. А вот правила описания, обработки и передачи сообщений строго стандартизированы. Ключевой особенностью SOAP выступает высокий уровень безопасности. Он обеспечивается механизмами шифрования, аутентификации сообщений и управления транзакциями.</p>
<h4 class="wp-block-heading"><span class="ez-toc-section" id="GraphQL"></span><em>GraphQL</em><span class="ez-toc-section-end"></span></h4>
<p>Это язык запроса для АПИ. Он позволяет клиентским сторонам запрашивать только те данные, которые нужны для дальнейшей работы. С помощью одного запроса GraphQL удается получить данные, которые в REST требовали бы нескольких запросов подряд.</p>
<h4 class="wp-block-heading"><span class="ez-toc-section" id="RPC"></span><em>RPC</em><span class="ez-toc-section-end"></span></h4>
<p>RPC – протокол, с помощью которого возможен вызов функций приложениями на удаленных серверах. Так, если бы они выполнялись локально. RPC удаленно отправляет на сервер запрос с указанием метода и необходимых параметров. Ответом будет служить результат выполнения метода.</p>
<p>У RPC API много реализаций. В качестве примеров можно привести gRPC от Google или tRPC от TypeScript.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9A%D0%B0%D0%BA_%D0%B2%D1%8B%D0%B7%D0%B2%D0%B0%D1%82%D1%8C"></span>Как вызвать<span class="ez-toc-section-end"></span></h2>
<p>API для дальнейшей работы в проекте должен быть вызван. Добиться результата можно несколькими способами:</p>
<ol>
<li>Напрямую. В этом случае система вызывает функции внутри себя и методы другой программы. Во второй ситуации приложение при работе способно отправлять запросы на получение данных из другого приложения. Метод также вызывается вручную. Это необходимо для проверки работоспособности системы без затрагивания графического интерфейса.</li>
<li>Косвенно. В этом случае работа по обращению к рассматриваемому компоненту производится пользователем. Он делает это через графический интерфейс. В качестве примера стоит привести нажатие на кнопку «Создание новой вкладки» в браузере. Пользователь будет вызывать в API функции. Их результатом станет формирование новой вкладки.</li>
</ol>
<p>С базовыми понятиями и особенностями работы программных интерфейсов ознакомиться удалось. Чтобы научиться создавать их самостоятельно и использовать в своих проектах, рекомендуется пройти дистанционные компьютерные курсы.</p>
<p><em>Хотите освоить современную IT-специальность? Огромный выбор курсов по востребованным IT-направлениям есть в <a href="https://otus.ru/?utm_source=oj" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external" class="wpel-icon-right">Otus<span class="wpel-icon wpel-image wpel-icon-6"></span></a>!</em> </p>
</div><!-- .post-content -->
<div class="the-post-foot cf">
<div class="tag-share cf">
<div class="post-tags"><a href="https://otus.ru/journal/tag/api/" rel="tag" data-wpel-link="internal">API</a><a href="https://otus.ru/journal/tag/programmirovanie/" rel="tag" data-wpel-link="internal">программирование</a></div>
<div class="post-share">
<div class="post-share-icons cf">
<span class="counters">
</span>
<a href="https://www.facebook.com/sharer.php?u=https%3A%2F%2Fotus.ru%2Fjournal%2Fapi-vvedenie-dlya-novichkov%2F" class="link facebook wpel-icon-right" target="_blank" title="Share on Facebook" data-wpel-link="external" rel="nofollow external noopener noreferrer"><i class="fa fa-facebook"></i><span class="wpel-icon wpel-image wpel-icon-6"></span></a>
<a href="https://twitter.com/intent/tweet?url=https%3A%2F%2Fotus.ru%2Fjournal%2Fapi-vvedenie-dlya-novichkov%2F&text=API%3A%20%D0%B2%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5%20%D0%B4%D0%BB%D1%8F%20%D0%BD%D0%BE%D0%B2%D0%B8%D1%87%D0%BA%D0%BE%D0%B2" class="link twitter wpel-icon-right" target="_blank" title="Share on Twitter" data-wpel-link="external" rel="nofollow external noopener noreferrer"><i class="fa fa-twitter"></i><span class="wpel-icon wpel-image wpel-icon-6"></span></a>
<a href="https://www.linkedin.com/shareArticle?mini=true&url=https%3A%2F%2Fotus.ru%2Fjournal%2Fapi-vvedenie-dlya-novichkov%2F" class="link linkedin wpel-icon-right" target="_blank" title="LinkedIn" data-wpel-link="external" rel="nofollow external noopener noreferrer"><i class="fa fa-linkedin"></i><span class="wpel-icon wpel-image wpel-icon-6"></span></a>
<a href="https://pinterest.com/pin/create/button/?url=https%3A%2F%2Fotus.ru%2Fjournal%2Fapi-vvedenie-dlya-novichkov%2F&media=https%3A%2F%2Fotus.ru%2Fjournal%2Fwp-content%2Fuploads%2F2024%2F10%2Foj-1080x720-2024-10-20T231703.864.jpg&description=API%3A%20%D0%B2%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5%20%D0%B4%D0%BB%D1%8F%20%D0%BD%D0%BE%D0%B2%D0%B8%D1%87%D0%BA%D0%BE%D0%B2" class="link pinterest wpel-icon-right" target="_blank" title="Pinterest" data-wpel-link="external" rel="nofollow external noopener noreferrer"><i class="fa fa-pinterest-p"></i><span class="wpel-icon wpel-image wpel-icon-6"></span></a>
</div>
</div>
</div>
</div>
<div class="post-nav">
<div class="post previous cf">
<a href="https://otus.ru/journal/peredacha-fajlov-po-internetu-chto-nuzhno-znat/" title="Prev Post" class="nav-icon" data-wpel-link="internal">
<i class="fa fa-angle-left"></i>
</a>
<span class="content">
<a href="https://otus.ru/journal/peredacha-fajlov-po-internetu-chto-nuzhno-znat/" class="image-link" rel="previous" data-wpel-link="internal">
<img width="150" height="106" src="data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20150%20106%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3C%2Fsvg%3E" class="attachment-thumbnail size-thumbnail lazyload wp-post-image" alt="Передача файлов по Интернету: что нужно знать" decoding="async" data-srcset="https://otus.ru/journal/wp-content/uploads/2024/10/oj-1080x720-2024-10-20T230328.760-150x106.jpg 150w, https://otus.ru/journal/wp-content/uploads/2024/10/oj-1080x720-2024-10-20T230328.760-300x212.jpg 300w, https://otus.ru/journal/wp-content/uploads/2024/10/oj-1080x720-2024-10-20T230328.760-1024x724.jpg 1024w, https://otus.ru/journal/wp-content/uploads/2024/10/oj-1080x720-2024-10-20T230328.760-768x543.jpg 768w, https://otus.ru/journal/wp-content/uploads/2024/10/oj-1080x720-2024-10-20T230328.760-1536x1086.jpg 1536w" data-src="https://otus.ru/journal/wp-content/uploads/2024/10/oj-1080x720-2024-10-20T230328.760-150x106.jpg" data-sizes="(max-width: 150px) 100vw, 150px" title="Передача файлов по Интернету: что нужно знать" /> </a>
<div class="post-meta">
<span class="label">Prev Post</span>
<div class="post-meta post-meta-b">
<h2 class="post-title">
<a href="https://otus.ru/journal/peredacha-fajlov-po-internetu-chto-nuzhno-znat/" data-wpel-link="internal">Передача файлов по Интернету: что нужно знать</a>
</h2>
<div class="below">
<a href="https://otus.ru/journal/peredacha-fajlov-po-internetu-chto-nuzhno-znat/" class="meta-item date-link" data-wpel-link="internal"><time class="post-date" datetime="2024-10-20T20:03:42+00:00">20 октября, 2024</time></a>
<span class="meta-sep"></span>
<span class="meta-item read-time">9 Mins Read</span>
</div>
</div> </div>
</span>
</div>
<div class="post next cf">
<a href="https://otus.ru/journal/rastrovaya-grafika/" title="Next Post" class="nav-icon" data-wpel-link="internal">
<i class="fa fa-angle-right"></i>
</a>
<span class="content">
<a href="https://otus.ru/journal/rastrovaya-grafika/" class="image-link" rel="next" data-wpel-link="internal">
<img width="150" height="106" src="data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20150%20106%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3C%2Fsvg%3E" class="attachment-thumbnail size-thumbnail lazyload wp-post-image" alt="Растровая графика" decoding="async" data-srcset="https://otus.ru/journal/wp-content/uploads/2024/10/oj-1080x720-2024-10-20T234346.914-150x106.jpg 150w, https://otus.ru/journal/wp-content/uploads/2024/10/oj-1080x720-2024-10-20T234346.914-300x212.jpg 300w, https://otus.ru/journal/wp-content/uploads/2024/10/oj-1080x720-2024-10-20T234346.914-1024x724.jpg 1024w, https://otus.ru/journal/wp-content/uploads/2024/10/oj-1080x720-2024-10-20T234346.914-768x543.jpg 768w, https://otus.ru/journal/wp-content/uploads/2024/10/oj-1080x720-2024-10-20T234346.914-1536x1086.jpg 1536w" data-src="https://otus.ru/journal/wp-content/uploads/2024/10/oj-1080x720-2024-10-20T234346.914-150x106.jpg" data-sizes="(max-width: 150px) 100vw, 150px" title="Растровая графика" /> </a>
<div class="post-meta">
<span class="label">Next Post</span>
<div class="post-meta post-meta-b">
<h2 class="post-title">
<a href="https://otus.ru/journal/rastrovaya-grafika/" data-wpel-link="internal">Растровая графика</a>
</h2>
<div class="below">
<a href="https://otus.ru/journal/rastrovaya-grafika/" class="meta-item date-link" data-wpel-link="internal"><time class="post-date" datetime="2024-10-20T20:44:08+00:00">20 октября, 2024</time></a>
<span class="meta-sep"></span>
<span class="meta-item read-time">6 Mins Read</span>
</div>
</div> </div>
</span>
</div>
</div>
<section class="related-posts grid-3">
<h4 class="section-head"><span class="title">Читать ещё</span></h4>
<div class="ts-row posts cf">
<article class="post col-4">
<a href="https://otus.ru/journal/uroven-gotovnosti-cto-k-2026/" title="Уровень готовности CTO к 2026" class="image-link" data-wpel-link="internal">
<img width="270" height="180" src="data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20270%20180%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3C%2Fsvg%3E" class="image lazyload wp-post-image" alt="Уровень готовности CTO к 2026" title="Уровень готовности CTO к 2026" decoding="async" loading="lazy" data-srcset="https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-3-270x180.jpg 270w, https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-3-770x515.jpg 770w, https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-3-370x245.jpg 370w" data-src="https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-3-270x180.jpg" data-sizes="(max-width: 270px) 100vw, 270px" /> </a>
<div class="content">
<h3 class="post-title"><a href="https://otus.ru/journal/uroven-gotovnosti-cto-k-2026/" class="post-link" data-wpel-link="internal">Уровень готовности CTO к 2026</a></h3>
<div class="post-meta">
<time class="post-date" datetime="2025-11-16T19:50:59+00:00">16 ноября, 2025</time>
</div>
</div>
</article >
<article class="post col-4">
<a href="https://otus.ru/journal/novye-uroki-noyabrya-tolko-top-temy-po-programmirovaniju/" title="Новые уроки ноября: только топ-темы по программированию" class="image-link" data-wpel-link="internal">
<img width="270" height="180" src="data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20270%20180%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3C%2Fsvg%3E" class="image lazyload wp-post-image" alt="Новые уроки ноября: только топ-темы по программированию" title="Новые уроки ноября: только топ-темы по программированию" decoding="async" loading="lazy" data-srcset="https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-2-270x180.jpg 270w, https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-2-770x515.jpg 770w, https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-2-370x245.jpg 370w" data-src="https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-2-270x180.jpg" data-sizes="(max-width: 270px) 100vw, 270px" /> </a>
<div class="content">
<h3 class="post-title"><a href="https://otus.ru/journal/novye-uroki-noyabrya-tolko-top-temy-po-programmirovaniju/" class="post-link" data-wpel-link="internal">Новые уроки ноября: только топ-темы по программированию</a></h3>
<div class="post-meta">
<time class="post-date" datetime="2025-11-09T23:24:11+00:00">9 ноября, 2025</time>
</div>
</div>
</article >
<article class="post col-4">
<a href="https://otus.ru/journal/schjot-idjot-na-chasy/" title="Счёт идёт на часы" class="image-link" data-wpel-link="internal">
<img width="270" height="180" src="data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20270%20180%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3C%2Fsvg%3E" class="image lazyload wp-post-image" alt="Счёт идёт на часы" title="Счёт идёт на часы" decoding="async" loading="lazy" data-srcset="https://otus.ru/journal/wp-content/uploads/2025/10/oj-1080x720-kopiya-7-270x180.png 270w, https://otus.ru/journal/wp-content/uploads/2025/10/oj-1080x720-kopiya-7-770x515.png 770w, https://otus.ru/journal/wp-content/uploads/2025/10/oj-1080x720-kopiya-7-370x245.png 370w" data-src="https://otus.ru/journal/wp-content/uploads/2025/10/oj-1080x720-kopiya-7-270x180.png" data-sizes="(max-width: 270px) 100vw, 270px" /> </a>
<div class="content">
<h3 class="post-title"><a href="https://otus.ru/journal/schjot-idjot-na-chasy/" class="post-link" data-wpel-link="internal">Счёт идёт на часы</a></h3>
<div class="post-meta">
<time class="post-date" datetime="2025-10-30T15:04:59+00:00">30 октября, 2025</time>
</div>
</div>
</article >
</div>
</section>
</article> <!-- .the-post -->
</div>
<aside class="col-4 sidebar">
<div class="inner">
<ul>
<li id="search-2" class="widget widget_search"><h5 class="widget-title"><span>Поиск по блогу</span></h5>
<form method="get" class="search-form" action="https://otus.ru/journal/">
<label>
<span class="screen-reader-text">Search for:</span>
<input type="search" class="search-field" placeholder="Введите запрос и нажмите Enter" value="" name="s" title="Search for:" />
</label>
<button type="submit" class="search-submit"><i class="fa fa-search"></i></button>
</form>
</li>
<li id="tag_cloud-5" class="widget widget_tag_cloud"><h5 class="widget-title"><span>Метки</span></h5><div class="tagcloud"><a href="https://otus.ru/journal/tag/android-2/" class="tag-cloud-link tag-link-74 tag-link-position-1" style="font-size: 12.472222222222pt;" aria-label="Android (34 элемента)" data-wpel-link="internal">Android</a>
<a href="https://otus.ru/journal/tag/c-3/" class="tag-cloud-link tag-link-91 tag-link-position-2" style="font-size: 10.916666666667pt;" aria-label="C (23 элемента)" data-wpel-link="internal">C</a>
<a href="https://otus.ru/journal/tag/c-2/" class="tag-cloud-link tag-link-81 tag-link-position-3" style="font-size: 12.666666666667pt;" aria-label="C# (35 элементов)" data-wpel-link="internal">C#</a>
<a href="https://otus.ru/journal/tag/c/" class="tag-cloud-link tag-link-20 tag-link-position-4" style="font-size: 12.472222222222pt;" aria-label="c++ (34 элемента)" data-wpel-link="internal">c++</a>
<a href="https://otus.ru/journal/tag/computer-science/" class="tag-cloud-link tag-link-209 tag-link-position-5" style="font-size: 15.972222222222pt;" aria-label="computer science (78 элементов)" data-wpel-link="internal">computer science</a>
<a href="https://otus.ru/journal/tag/css/" class="tag-cloud-link tag-link-288 tag-link-position-6" style="font-size: 8.6805555555556pt;" aria-label="CSS (13 элементов)" data-wpel-link="internal">CSS</a>
<a href="https://otus.ru/journal/tag/data-science/" class="tag-cloud-link tag-link-151 tag-link-position-7" style="font-size: 8pt;" aria-label="Data Science (11 элементов)" data-wpel-link="internal">Data Science</a>
<a href="https://otus.ru/journal/tag/devops/" class="tag-cloud-link tag-link-98 tag-link-position-8" style="font-size: 10.138888888889pt;" aria-label="devops (19 элементов)" data-wpel-link="internal">devops</a>
<a href="https://otus.ru/journal/tag/docker/" class="tag-cloud-link tag-link-143 tag-link-position-9" style="font-size: 8.2916666666667pt;" aria-label="Docker (12 элементов)" data-wpel-link="internal">Docker</a>
<a href="https://otus.ru/journal/tag/gamedev/" class="tag-cloud-link tag-link-25 tag-link-position-10" style="font-size: 11.694444444444pt;" aria-label="gamedev (28 элементов)" data-wpel-link="internal">gamedev</a>
<a href="https://otus.ru/journal/tag/hr/" class="tag-cloud-link tag-link-103 tag-link-position-11" style="font-size: 8pt;" aria-label="hr (11 элементов)" data-wpel-link="internal">hr</a>
<a href="https://otus.ru/journal/tag/html/" class="tag-cloud-link tag-link-217 tag-link-position-12" style="font-size: 11.208333333333pt;" aria-label="HTML (25 элементов)" data-wpel-link="internal">HTML</a>
<a href="https://otus.ru/journal/tag/ios/" class="tag-cloud-link tag-link-101 tag-link-position-13" style="font-size: 8.9722222222222pt;" aria-label="iOS (14 элементов)" data-wpel-link="internal">iOS</a>
<a href="https://otus.ru/journal/tag/it/" class="tag-cloud-link tag-link-50 tag-link-position-14" style="font-size: 10.527777777778pt;" aria-label="IT (21 элемент)" data-wpel-link="internal">IT</a>
<a href="https://otus.ru/journal/tag/java/" class="tag-cloud-link tag-link-75 tag-link-position-15" style="font-size: 15.680555555556pt;" aria-label="Java (73 элемента)" data-wpel-link="internal">Java</a>
<a href="https://otus.ru/journal/tag/javascript/" class="tag-cloud-link tag-link-83 tag-link-position-16" style="font-size: 14.319444444444pt;" aria-label="JavaScript (53 элемента)" data-wpel-link="internal">JavaScript</a>
<a href="https://otus.ru/journal/tag/linux/" class="tag-cloud-link tag-link-141 tag-link-position-17" style="font-size: 11.888888888889pt;" aria-label="Linux (29 элементов)" data-wpel-link="internal">Linux</a>
<a href="https://otus.ru/journal/tag/machine-learning/" class="tag-cloud-link tag-link-167 tag-link-position-18" style="font-size: 8.6805555555556pt;" aria-label="Machine Learning (13 элементов)" data-wpel-link="internal">Machine Learning</a>
<a href="https://otus.ru/journal/tag/otus-book/" class="tag-cloud-link tag-link-261 tag-link-position-19" style="font-size: 9.9444444444444pt;" aria-label="otus book (18 элементов)" data-wpel-link="internal">otus book</a>
<a href="https://otus.ru/journal/tag/php/" class="tag-cloud-link tag-link-45 tag-link-position-20" style="font-size: 10.527777777778pt;" aria-label="PHP (21 элемент)" data-wpel-link="internal">PHP</a>
<a href="https://otus.ru/journal/tag/python/" class="tag-cloud-link tag-link-27 tag-link-position-21" style="font-size: 16.944444444444pt;" aria-label="Python (99 элементов)" data-wpel-link="internal">Python</a>
<a href="https://otus.ru/journal/tag/qa/" class="tag-cloud-link tag-link-155 tag-link-position-22" style="font-size: 11.402777777778pt;" aria-label="qa (26 элементов)" data-wpel-link="internal">qa</a>
<a href="https://otus.ru/journal/tag/sql/" class="tag-cloud-link tag-link-38 tag-link-position-23" style="font-size: 12.861111111111pt;" aria-label="SQL (37 элементов)" data-wpel-link="internal">SQL</a>
<a href="https://otus.ru/journal/tag/team-lead/" class="tag-cloud-link tag-link-364 tag-link-position-24" style="font-size: 9.9444444444444pt;" aria-label="team lead (18 элементов)" data-wpel-link="internal">team lead</a>
<a href="https://otus.ru/journal/tag/unity/" class="tag-cloud-link tag-link-24 tag-link-position-25" style="font-size: 8pt;" aria-label="unity (11 элементов)" data-wpel-link="internal">unity</a>
<a href="https://otus.ru/journal/tag/algoritmy/" class="tag-cloud-link tag-link-30 tag-link-position-26" style="font-size: 9.9444444444444pt;" aria-label="Алгоритмы (18 элементов)" data-wpel-link="internal">Алгоритмы</a>
<a href="https://otus.ru/journal/tag/bazy-dannyh/" class="tag-cloud-link tag-link-40 tag-link-position-27" style="font-size: 10.138888888889pt;" aria-label="Базы данных (19 элементов)" data-wpel-link="internal">Базы данных</a>
<a href="https://otus.ru/journal/tag/matematika/" class="tag-cloud-link tag-link-44 tag-link-position-28" style="font-size: 10.916666666667pt;" aria-label="Математика (23 элемента)" data-wpel-link="internal">Математика</a>
<a href="https://otus.ru/journal/tag/arhitektura-po/" class="tag-cloud-link tag-link-10 tag-link-position-29" style="font-size: 9.4583333333333pt;" aria-label="архитектура ПО (16 элементов)" data-wpel-link="internal">архитектура ПО</a>
<a href="https://otus.ru/journal/tag/bazy-dannyh-2/" class="tag-cloud-link tag-link-251 tag-link-position-30" style="font-size: 10.138888888889pt;" aria-label="базы данных (19 элементов)" data-wpel-link="internal">базы данных</a>
<a href="https://otus.ru/journal/tag/vebinar/" class="tag-cloud-link tag-link-201 tag-link-position-31" style="font-size: 13.930555555556pt;" aria-label="вебинар (48 элементов)" data-wpel-link="internal">вебинар</a>
<a href="https://otus.ru/journal/tag/dajdzhest/" class="tag-cloud-link tag-link-308 tag-link-position-32" style="font-size: 10.722222222222pt;" aria-label="дайджест (22 элемента)" data-wpel-link="internal">дайджест</a>
<a href="https://otus.ru/journal/tag/zapis-vebinara/" class="tag-cloud-link tag-link-226 tag-link-position-33" style="font-size: 14.902777777778pt;" aria-label="запись вебинара (61 элемент)" data-wpel-link="internal">запись вебинара</a>
<a href="https://otus.ru/journal/tag/zapis-uroka/" class="tag-cloud-link tag-link-272 tag-link-position-34" style="font-size: 16.069444444444pt;" aria-label="запись урока (80 элементов)" data-wpel-link="internal">запись урока</a>
<a href="https://otus.ru/journal/tag/informacionnaya-bezopasnost/" class="tag-cloud-link tag-link-232 tag-link-position-35" style="font-size: 10.138888888889pt;" aria-label="информационная безопасность (19 элементов)" data-wpel-link="internal">информационная безопасность</a>
<a href="https://otus.ru/journal/tag/karera-v-it/" class="tag-cloud-link tag-link-292 tag-link-position-36" style="font-size: 9.9444444444444pt;" aria-label="карьера в IT (18 элементов)" data-wpel-link="internal">карьера в IT</a>
<a href="https://otus.ru/journal/tag/podborka/" class="tag-cloud-link tag-link-7 tag-link-position-37" style="font-size: 12.666666666667pt;" aria-label="подборка (35 элементов)" data-wpel-link="internal">подборка</a>
<a href="https://otus.ru/journal/tag/podborka-statej/" class="tag-cloud-link tag-link-219 tag-link-position-38" style="font-size: 15.777777777778pt;" aria-label="подборка статей (75 элементов)" data-wpel-link="internal">подборка статей</a>
<a href="https://otus.ru/journal/tag/programmirovanie/" class="tag-cloud-link tag-link-65 tag-link-position-39" style="font-size: 22pt;" aria-label="программирование (332 элемента)" data-wpel-link="internal">программирование</a>
<a href="https://otus.ru/journal/tag/proekt/" class="tag-cloud-link tag-link-321 tag-link-position-40" style="font-size: 11.888888888889pt;" aria-label="проект (29 элементов)" data-wpel-link="internal">проект</a>
<a href="https://otus.ru/journal/tag/proektnaya-rabota/" class="tag-cloud-link tag-link-310 tag-link-position-41" style="font-size: 11.597222222222pt;" aria-label="проектная работа (27 элементов)" data-wpel-link="internal">проектная работа</a>
<a href="https://otus.ru/journal/tag/seti/" class="tag-cloud-link tag-link-181 tag-link-position-42" style="font-size: 12.958333333333pt;" aria-label="сети (38 элементов)" data-wpel-link="internal">сети</a>
<a href="https://otus.ru/journal/tag/testirovanie/" class="tag-cloud-link tag-link-69 tag-link-position-43" style="font-size: 13.930555555556pt;" aria-label="тестирование (48 элементов)" data-wpel-link="internal">тестирование</a>
<a href="https://otus.ru/journal/tag/upravlenie-komandoj/" class="tag-cloud-link tag-link-63 tag-link-position-44" style="font-size: 11.694444444444pt;" aria-label="управление командой (28 элементов)" data-wpel-link="internal">управление командой</a>
<a href="https://otus.ru/journal/tag/habr-2/" class="tag-cloud-link tag-link-203 tag-link-position-45" style="font-size: 13.930555555556pt;" aria-label="хабр (48 элементов)" data-wpel-link="internal">хабр</a></div>
</li>
</ul>
</div>
</aside>
</div> <!-- .ts-row -->
</div> <!-- .main -->
<footer class="main-footer dark bold">
<section class="lower-footer cf">
<div class="wrap">
<div class="links">
<div class="menu-menju-navykov-container"><ul id="menu-menju-navykov-1" class="menu"><li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10413"><a href="https://otus.ru/categories/programming/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Программирование<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10414"><a href="https://otus.ru/categories/architecture/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Архитектура<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10415"><a href="https://otus.ru/categories/operations/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Инфраструктура<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10416"><a href="https://otus.ru/categories/information-security-courses/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Безопасность<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10417"><a href="https://otus.ru/categories/data-science/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Data Science<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10418"><a href="https://otus.ru/categories/gamedev/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">GameDev<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10419"><a href="https://otus.ru/categories/marketing-business/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Управление<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10420"><a href="https://otus.ru/categories/analytics/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Аналитика и анализ<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10421"><a href="https://otus.ru/categories/testing/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Тестирование<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
</ul></div> </div>
<p class="copyright"> © 2015-2026 OTUS </p>
<div class="to-top">
<a href="#" class="back-to-top"><i class="fa fa-angle-up"></i> Top</a>
</div>
</div>
</section>
</footer>
</div> <!-- .main-wrap -->
<div class="mobile-menu-container off-canvas" id="mobile-menu">
<a href="#" class="close"><i class="fa fa-times"></i></a>
<div class="logo">
</div>
<ul class="mobile-menu"></ul>
</div>
<div class="search-modal-wrap">
<div class="search-modal-box" role="dialog" aria-modal="true">
<form method="get" class="search-form" action="https://otus.ru/journal/">
<input type="search" class="search-field" name="s" placeholder="Search..." value="" required />
<button type="submit" class="search-submit visuallyhidden">Submit</button>
<p class="message">
Type above and press <em>Enter</em> to search. Press <em>Esc</em> to cancel. </p>
</form>
</div>
</div>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/clearfy/components/comments-plus/assets/js/url-span.js" id="wbcr-comments-plus-url-span-js"></script>
<script type="text/javascript" id="ez-toc-scroll-scriptjs-js-extra">
/* <![CDATA[ */
var eztoc_smooth_local = {"scroll_offset":"30"};
/* ]]> */
</script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/easy-table-of-contents/assets/js/smooth_scroll.min.js" id="ez-toc-scroll-scriptjs-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/easy-table-of-contents/vendor/js-cookie/js.cookie.min.js" id="ez-toc-js-cookie-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/easy-table-of-contents/vendor/sticky-kit/jquery.sticky-kit.min.js" id="ez-toc-jquery-sticky-kit-js"></script>
<script type="text/javascript" id="ez-toc-js-js-extra">
/* <![CDATA[ */
var ezTOC = {"smooth_scroll":"1","visibility_hide_by_default":"","scroll_offset":"30","fallbackIcon":"<span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span>"};
/* ]]> */
</script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/easy-table-of-contents/assets/js/front.min.js" id="ez-toc-js-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/custom-script.js" id="custom-script-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/magnific-popup.js" id="magnific-popup-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/jquery.fitvids.js" id="jquery-fitvids-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-includes/js/imagesloaded.min.js" id="imagesloaded-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/object-fit-images.js" id="object-fit-images-js"></script>
<script type="text/javascript" id="contentberg-theme-js-extra">
/* <![CDATA[ */
var Bunyad = {"custom_ajax_url":"\/journal\/api-vvedenie-dlya-novichkov\/"};
/* ]]> */
</script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/theme.js" id="contentberg-theme-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/theia-sticky-sidebar.js" id="theia-sticky-sidebar-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/jquery.slick.js" id="jquery-slick-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/jarallax.js" id="jarallax-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-includes/js/masonry.min.js" id="masonry-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-includes/js/jquery/jquery.masonry.min.js" id="jquery-masonry-js"></script>
</body>
</html>
<!-- Cache served by breeze CACHE - Last modified: Tue, 10 Mar 2026 18:27:15 GMT -->