0 added
0 removed
Original
2026-01-01
Modified
2026-02-21
1
<p><a>#статьи</a></p>
1
<p><a>#статьи</a></p>
2
<ul><li>17 июл 2024</li>
2
<ul><li>17 июл 2024</li>
3
<li>0</li>
3
<li>0</li>
4
</ul><p>Простыми словами объясняем, как программы общаются между собой, и практикуем API-вызовы.</p>
4
</ul><p>Простыми словами объясняем, как программы общаются между собой, и практикуем API-вызовы.</p>
5
<p>Иллюстрация: Катя Павловская для Skillbox Media</p>
5
<p>Иллюстрация: Катя Павловская для Skillbox Media</p>
6
<p>Пишет о программировании, в свободное время создаёт игры. Мечтает открыть свою студию и выпускать ламповые RPG.</p>
6
<p>Пишет о программировании, в свободное время создаёт игры. Мечтает открыть свою студию и выпускать ламповые RPG.</p>
7
<p>Заходите вы на сайт с вакансиями и ищете работу бэкенд-разработчиком, а там почти в каждой вакансии написано, что нужно уметь работать с REST API, или SOAP API, или просто API. Что всё это значит и зачем нужно программисту? Давайте разбираться.</p>
7
<p>Заходите вы на сайт с вакансиями и ищете работу бэкенд-разработчиком, а там почти в каждой вакансии написано, что нужно уметь работать с REST API, или SOAP API, или просто API. Что всё это значит и зачем нужно программисту? Давайте разбираться.</p>
8
<p><strong>Содержание</strong></p>
8
<p><strong>Содержание</strong></p>
9
<ul><li><a>Что такое API</a></li>
9
<ul><li><a>Что такое API</a></li>
10
<li><a>Почему API называют интерфейсом</a></li>
10
<li><a>Почему API называют интерфейсом</a></li>
11
<li><a>Как API помогает писать надёжные программы</a></li>
11
<li><a>Как API помогает писать надёжные программы</a></li>
12
<li><a>Виды API</a></li>
12
<li><a>Виды API</a></li>
13
<li><a>Интеграция API</a></li>
13
<li><a>Интеграция API</a></li>
14
<li><a>Почему API так популярны у программистов</a></li>
14
<li><a>Почему API так популярны у программистов</a></li>
15
<li><a>Какие функции могут входить в API</a></li>
15
<li><a>Какие функции могут входить в API</a></li>
16
<li><a>Как компании зарабатывают с помощью API</a></li>
16
<li><a>Как компании зарабатывают с помощью API</a></li>
17
<li><a>Как происходит вызов функций API</a></li>
17
<li><a>Как происходит вызов функций API</a></li>
18
</ul><p><strong>API</strong>(англ. application programming interface - программный интерфейс приложения) - это набор способов и правил, по которым различные программы общаются между собой и обмениваются данными.</p>
18
</ul><p><strong>API</strong>(англ. application programming interface - программный интерфейс приложения) - это набор способов и правил, по которым различные программы общаются между собой и обмениваются данными.</p>
19
<p>Все эти взаимодействия происходят с помощью функций, классов, методов, структур, а иногда констант одной программы, к которой обращаются другие. Это основной принцип работы API.</p>
19
<p>Все эти взаимодействия происходят с помощью функций, классов, методов, структур, а иногда констант одной программы, к которой обращаются другие. Это основной принцип работы API.</p>
20
<p>Допустим, вы покупаете билет в кино с помощью банковской карты. Во время покупки терминал обращается к API банка, который выпустил вашу карту, и отправляет запрос на оплату. А если вы заказываете такси через приложение, оно обращается к платёжной системе тоже через API.</p>
20
<p>Допустим, вы покупаете билет в кино с помощью банковской карты. Во время покупки терминал обращается к API банка, который выпустил вашу карту, и отправляет запрос на оплату. А если вы заказываете такси через приложение, оно обращается к платёжной системе тоже через API.</p>
21
Так терминал отправляет запрос в банк, чтобы человек купил билет в кино<em>Иллюстрация: Катя Павловская для Skillbox Media</em><p>Программный интерфейс похож на договор между клиентом и продавцом. Только клиентом выступает приложение, которому нужны данные, а продавцом - сервер или ресурс, с которого мы эти данные берём. В таком договоре прописываются условия того, как и какие данные может получить клиент.</p>
21
Так терминал отправляет запрос в банк, чтобы человек купил билет в кино<em>Иллюстрация: Катя Павловская для Skillbox Media</em><p>Программный интерфейс похож на договор между клиентом и продавцом. Только клиентом выступает приложение, которому нужны данные, а продавцом - сервер или ресурс, с которого мы эти данные берём. В таком договоре прописываются условия того, как и какие данные может получить клиент.</p>
22
<p>API встречается практически везде:</p>
22
<p>API встречается практически везде:</p>
23
<ul><li>В языках программирования он помогает функциям корректно общаться друг с другом. Вызывающая функция должна соблюдать тип данных и последовательность параметров вызываемой функции.</li>
23
<ul><li>В языках программирования он помогает функциям корректно общаться друг с другом. Вызывающая функция должна соблюдать тип данных и последовательность параметров вызываемой функции.</li>
24
<li>В операционной системе он помогает программам получать данные из памяти или менять настройки ОС. Поэтому, чтобы разрабатывать приложения для конкретной операционной системы, нужно знать её API.</li>
24
<li>В операционной системе он помогает программам получать данные из памяти или менять настройки ОС. Поэтому, чтобы разрабатывать приложения для конкретной операционной системы, нужно знать её API.</li>
25
<li>В вебе сервисы общаются друг с другом через программный интерфейс. Если API открытый, то официальную документацию по работе с ним публикуют создатели сервиса-источника. Так, например, выглядит<a>документация Telegram</a>.</li>
25
<li>В вебе сервисы общаются друг с другом через программный интерфейс. Если API открытый, то официальную документацию по работе с ним публикуют создатели сервиса-источника. Так, например, выглядит<a>документация Telegram</a>.</li>
26
</ul><p>Несмотря на то что термин довольно широкий, чаще всего в вакансиях речь идёт именно о третьем варианте.</p>
26
</ul><p>Несмотря на то что термин довольно широкий, чаще всего в вакансиях речь идёт именно о третьем варианте.</p>
27
<p>Интерфейс - это граница между двумя функциональными системами, на которой происходит их взаимодействие и обмен информацией. При этом процессы внутри каждой из систем скрыты друг от друга.</p>
27
<p>Интерфейс - это граница между двумя функциональными системами, на которой происходит их взаимодействие и обмен информацией. При этом процессы внутри каждой из систем скрыты друг от друга.</p>
28
<p>С помощью интерфейса можно использовать возможности разных систем, не задумываясь о том, как они обрабатывают наши запросы и что у них "под капотом". Например, чтобы позвонить, не обязательно знать, как смартфон обрабатывает нажатия на тачскрин. Важно лишь, что в гаджете есть "кнопка", которая всегда возвращает одинаковый результат в ответ на определённые действия.</p>
28
<p>С помощью интерфейса можно использовать возможности разных систем, не задумываясь о том, как они обрабатывают наши запросы и что у них "под капотом". Например, чтобы позвонить, не обязательно знать, как смартфон обрабатывает нажатия на тачскрин. Важно лишь, что в гаджете есть "кнопка", которая всегда возвращает одинаковый результат в ответ на определённые действия.</p>
29
<p>Точно так же с помощью вызовов API можно выполнить определённые функции программы, не зная, как она работает. Поэтому API и называют интерфейсом.</p>
29
<p>Точно так же с помощью вызовов API можно выполнить определённые функции программы, не зная, как она работает. Поэтому API и называют интерфейсом.</p>
30
API - это что-то понятное для пользователя. А вот его реализация может быть очень сложной<em>Иллюстрация: Катя Павловская для Skillbox Media</em><p>Обычно мы не знаем, как программы устроены внутри. Впрочем, нам иногда и не важно, как они работают. Поэтому программную реализацию называют "чёрным ящиком" и прячут за несколькими уровнями абстракций, чтобы пользователям было удобно ими пользоваться.</p>
30
API - это что-то понятное для пользователя. А вот его реализация может быть очень сложной<em>Иллюстрация: Катя Павловская для Skillbox Media</em><p>Обычно мы не знаем, как программы устроены внутри. Впрочем, нам иногда и не важно, как они работают. Поэтому программную реализацию называют "чёрным ящиком" и прячут за несколькими уровнями абстракций, чтобы пользователям было удобно ими пользоваться.</p>
31
<p>Уровни абстракции сильно ускоряют процесс разработки, потому что программист может использовать готовые функции API в других приложениях. Это обычная практика. Например, большинство операционных систем предоставляют свои API другим программам, чтобы они получили возможность:</p>
31
<p>Уровни абстракции сильно ускоряют процесс разработки, потому что программист может использовать готовые функции API в других приложениях. Это обычная практика. Например, большинство операционных систем предоставляют свои API другим программам, чтобы они получили возможность:</p>
32
<ul><li>работать с файловой системой;</li>
32
<ul><li>работать с файловой системой;</li>
33
<li>отрисовывать графику;</li>
33
<li>отрисовывать графику;</li>
34
<li>хранить данные;</li>
34
<li>хранить данные;</li>
35
<li>использовать сетевые возможности;</li>
35
<li>использовать сетевые возможности;</li>
36
<li>воспроизводить аудио и так далее.</li>
36
<li>воспроизводить аудио и так далее.</li>
37
</ul><p>Windows, Linux или macOS сами определяют, какие функции нужно вызвать и какие параметры передать, чтобы выполнить те или иные действия. Всё это описывается в документации к API, с которым работают разработчики других программ.</p>
37
</ul><p>Windows, Linux или macOS сами определяют, какие функции нужно вызвать и какие параметры передать, чтобы выполнить те или иные действия. Всё это описывается в документации к API, с которым работают разработчики других программ.</p>
38
<p>Если какой-то API для облачных вычислений станет быстрее извлекать квадратный корень, то и все использующие его программы - от онлайн-калькуляторов до нейросетей - тоже начнут работать быстрее.</p>
38
<p>Если какой-то API для облачных вычислений станет быстрее извлекать квадратный корень, то и все использующие его программы - от онлайн-калькуляторов до нейросетей - тоже начнут работать быстрее.</p>
39
<p>Для разных проектов нужны разные API, ведь в одних ситуациях важна скорость работы, а в других - надёжность и совместимость с определённой экосистемой.</p>
39
<p>Для разных проектов нужны разные API, ведь в одних ситуациях важна скорость работы, а в других - надёжность и совместимость с определённой экосистемой.</p>
40
<p>Web API - общее название для всех API, которые используют для взаимодействия между веб-сервисами через интернет. С их помощью приложения обмениваются данными и выполняют действия по протоколу HTTP(S). Все перечисленные ниже интерфейсы относятся к Web API.</p>
40
<p>Web API - общее название для всех API, которые используют для взаимодействия между веб-сервисами через интернет. С их помощью приложения обмениваются данными и выполняют действия по протоколу HTTP(S). Все перечисленные ниже интерфейсы относятся к Web API.</p>
41
<p>REST API - это архитектурный подход для создания веб-сервисов. Он прописывает ограничения устройства и функциональности API. По сути, REST - это набор правил и принципов. Всего их шесть:</p>
41
<p>REST API - это архитектурный подход для создания веб-сервисов. Он прописывает ограничения устройства и функциональности API. По сути, REST - это набор правил и принципов. Всего их шесть:</p>
42
<ul><li><strong>Клиент-серверная архитектура.</strong>При этом подходе приложение состоит из двух "ипостастей": сервера и клиента. Например, код и ресурсы этой страницы хранятся на серверах Skillbox, а ваш браузер выступает в роли клиента, который подтягивает с сервера нужные вам данные.</li>
42
<ul><li><strong>Клиент-серверная архитектура.</strong>При этом подходе приложение состоит из двух "ипостастей": сервера и клиента. Например, код и ресурсы этой страницы хранятся на серверах Skillbox, а ваш браузер выступает в роли клиента, который подтягивает с сервера нужные вам данные.</li>
43
<li><strong>Отсутствие состояния (statelessness).</strong>Сервер не хранит данные о предыдущих взаимодействиях с клиентом - каждый запрос от клиента к серверу должен быть самодостаточным. При таком подходе нагрузка на сервер снижается в несколько раз - ему не нужно держать в памяти каждую сессию обмена данными с клиентом.</li>
43
<li><strong>Отсутствие состояния (statelessness).</strong>Сервер не хранит данные о предыдущих взаимодействиях с клиентом - каждый запрос от клиента к серверу должен быть самодостаточным. При таком подходе нагрузка на сервер снижается в несколько раз - ему не нужно держать в памяти каждую сессию обмена данными с клиентом.</li>
44
<li><strong>Кэшируемость (cacheability).</strong>Благодаря кэшируемости клиент может сохранять ответы API для повторного использования без выполнения запроса. Это снижает задержку и нагрузку на сервер. Ответы REST API также должны указывать, могут ли они быть кэшированы клиентом.</li>
44
<li><strong>Кэшируемость (cacheability).</strong>Благодаря кэшируемости клиент может сохранять ответы API для повторного использования без выполнения запроса. Это снижает задержку и нагрузку на сервер. Ответы REST API также должны указывать, могут ли они быть кэшированы клиентом.</li>
45
<li><strong>Единообразие интерфейса (uniform interface).</strong>REST API должны работать через единообразный интерфейс, который упрощает взаимодействие между клиентами и серверами. В REST API это стандартные методы HTTP (GET, POST, PUT, DELETE), а также чёткие соглашения об именовании ресурсов.</li>
45
<li><strong>Единообразие интерфейса (uniform interface).</strong>REST API должны работать через единообразный интерфейс, который упрощает взаимодействие между клиентами и серверами. В REST API это стандартные методы HTTP (GET, POST, PUT, DELETE), а также чёткие соглашения об именовании ресурсов.</li>
46
</ul><ul><li><strong>Слои (layered system).</strong>Архитектура REST API - это настоящий слоёный пирог, который состоит из серверов, прокси, шлюзов, балансировщиков нагрузки и массы других вспомогательных систем. Поэтому клиенты никогда не знают точно, общаются они напрямую с сервером или с его "дублёром".</li>
46
</ul><ul><li><strong>Слои (layered system).</strong>Архитектура REST API - это настоящий слоёный пирог, который состоит из серверов, прокси, шлюзов, балансировщиков нагрузки и массы других вспомогательных систем. Поэтому клиенты никогда не знают точно, общаются они напрямую с сервером или с его "дублёром".</li>
47
</ul><em>Изображение: Майя Мальгина для Skillbox Media</em><ul><li><strong>Код по требованию (code on demand) - необязательный принцип.</strong>Сервер может отправлять код, который будет выполняться уже на стороне клиента, - например, это может быть код JS-скриптов и других интерактивных элементов интерфейса.</li>
47
</ul><em>Изображение: Майя Мальгина для Skillbox Media</em><ul><li><strong>Код по требованию (code on demand) - необязательный принцип.</strong>Сервер может отправлять код, который будет выполняться уже на стороне клиента, - например, это может быть код JS-скриптов и других интерактивных элементов интерфейса.</li>
48
</ul><p><strong>Плюсы REST API</strong></p>
48
</ul><p><strong>Плюсы REST API</strong></p>
49
<ul><li>Освоить проще, чем SOAP или GraphQL.</li>
49
<ul><li>Освоить проще, чем SOAP или GraphQL.</li>
50
<li>Используются стандартные HTTP-методы (GET, POST, PUT, DELETE).</li>
50
<li>Используются стандартные HTTP-методы (GET, POST, PUT, DELETE).</li>
51
<li>Широкая поддержка и совместимость с веб-технологиями.</li>
51
<li>Широкая поддержка и совместимость с веб-технологиями.</li>
52
<li>Кэширование и масштабируемость.</li>
52
<li>Кэширование и масштабируемость.</li>
53
</ul><p><strong>Минусы REST API</strong></p>
53
</ul><p><strong>Минусы REST API</strong></p>
54
<ul><li><strong>Перегрузка сети.</strong>REST API использует текстовые форматы, например JSON, а это увеличивает объём передаваемых данных в сравнении с бинарными форматами.</li>
54
<ul><li><strong>Перегрузка сети.</strong>REST API использует текстовые форматы, например JSON, а это увеличивает объём передаваемых данных в сравнении с бинарными форматами.</li>
55
<li><strong>Нет единого стандарта.</strong>У REST API нет строгой спецификации, и многие разработчики реализуют API на основе требований конкретного проекта. Это усложняет интеграцию с другими сервисами.</li>
55
<li><strong>Нет единого стандарта.</strong>У REST API нет строгой спецификации, и многие разработчики реализуют API на основе требований конкретного проекта. Это усложняет интеграцию с другими сервисами.</li>
56
<li><strong>Недостаточная безопасность.</strong>Разработчики должны самостоятельно внедрять средства авторизации и аутентификации. Встроенных механизмов защиты нет.</li>
56
<li><strong>Недостаточная безопасность.</strong>Разработчики должны самостоятельно внедрять средства авторизации и аутентификации. Встроенных механизмов защиты нет.</li>
57
<li><strong>Нет поддержки долгоживущих соединений.</strong>REST API построен на синхронном протоколе HTTP, который работает в формате "запрос - ответ". Из-за этого разработчики не могут реализовать поддержку долгоживущих соединений, например веб-сокетов.</li>
57
<li><strong>Нет поддержки долгоживущих соединений.</strong>REST API построен на синхронном протоколе HTTP, который работает в формате "запрос - ответ". Из-за этого разработчики не могут реализовать поддержку долгоживущих соединений, например веб-сокетов.</li>
58
</ul><p>REST API широко используют в веб-разработке для организации взаимодействия между клиентом и сервером. Например, на базе принципов REST разрабатывают API для социальных сетей, онлайн-магазинов и мобильных приложений.</p>
58
</ul><p>REST API широко используют в веб-разработке для организации взаимодействия между клиентом и сервером. Например, на базе принципов REST разрабатывают API для социальных сетей, онлайн-магазинов и мобильных приложений.</p>
59
<p>SOAP - строгий протокол обмена сообщениями по сети. Для форматирования сообщений используется язык разметки XML, а правила описания, обработки и передачи сообщений жёстко стандартизированы. Одна из главных отличительных черт SOAP - высокий уровень безопасности, который обеспечивается механизмами шифрования, аутентификации сообщений и управления транзакциями.</p>
59
<p>SOAP - строгий протокол обмена сообщениями по сети. Для форматирования сообщений используется язык разметки XML, а правила описания, обработки и передачи сообщений жёстко стандартизированы. Одна из главных отличительных черт SOAP - высокий уровень безопасности, который обеспечивается механизмами шифрования, аутентификации сообщений и управления транзакциями.</p>
60
<p><strong>Плюсы SOAP API</strong></p>
60
<p><strong>Плюсы SOAP API</strong></p>
61
<ul><li><strong>Стандартизация.</strong>SOAP - стандартизированный протокол с чёткими правилами для обмена сообщениями. Это позволяет всегда получать предсказуемый результат.</li>
61
<ul><li><strong>Стандартизация.</strong>SOAP - стандартизированный протокол с чёткими правилами для обмена сообщениями. Это позволяет всегда получать предсказуемый результат.</li>
62
<li><strong>Безопасность.</strong>Поддерживаются методы шифрования и управления транзакциями, а сообщения можно подписывать цифровой подписью, что полезно для корпоративных приложений.</li>
62
<li><strong>Безопасность.</strong>Поддерживаются методы шифрования и управления транзакциями, а сообщения можно подписывать цифровой подписью, что полезно для корпоративных приложений.</li>
63
<li><strong>Гибкость.</strong>SOAP работает поверх различных протоколов передачи данных, включая HTTP, TCP и SMTP, в отличие от, например, REST API, который использует только HTTP.</li>
63
<li><strong>Гибкость.</strong>SOAP работает поверх различных протоколов передачи данных, включая HTTP, TCP и SMTP, в отличие от, например, REST API, который использует только HTTP.</li>
64
</ul><p><strong>Минусы SOAP API</strong></p>
64
</ul><p><strong>Минусы SOAP API</strong></p>
65
<ul><li><strong>Сложность.</strong>Реализация и поддержка SOAP занимает больше времени, чем REST.</li>
65
<ul><li><strong>Сложность.</strong>Реализация и поддержка SOAP занимает больше времени, чем REST.</li>
66
<li><strong>Низкая производительность.</strong>Ответы SOAP часто объёмнее, чем у других видов API. Это снижает скорость передачи данных.</li>
66
<li><strong>Низкая производительность.</strong>Ответы SOAP часто объёмнее, чем у других видов API. Это снижает скорость передачи данных.</li>
67
<li><strong>Не поддерживает JSON.</strong>SOAP по умолчанию работает с форматом XML, а современные веб-приложения используют JSON. Поэтому протокол приходится модифицировать.</li>
67
<li><strong>Не поддерживает JSON.</strong>SOAP по умолчанию работает с форматом XML, а современные веб-приложения используют JSON. Поэтому протокол приходится модифицировать.</li>
68
</ul><p>GraphQL - это язык запросов для API. Он хорош тем, что позволяет клиентам запрашивать только данные, которые им действительно нужны. Кроме того, с помощью одного запроса GraphQL можно получить данные, которые в REST требовали бы двух или даже трёх запросов подряд. Такая работа API возможна благодаря строгой типизации структуры запросов.</p>
68
</ul><p>GraphQL - это язык запросов для API. Он хорош тем, что позволяет клиентам запрашивать только данные, которые им действительно нужны. Кроме того, с помощью одного запроса GraphQL можно получить данные, которые в REST требовали бы двух или даже трёх запросов подряд. Такая работа API возможна благодаря строгой типизации структуры запросов.</p>
69
<p><strong>Плюсы GraphQL</strong></p>
69
<p><strong>Плюсы GraphQL</strong></p>
70
<ul><li><strong>Гибкость.</strong>Клиенты могут запрашивать только нужные данные, что позволяет избегать передачи лишней информации.</li>
70
<ul><li><strong>Гибкость.</strong>Клиенты могут запрашивать только нужные данные, что позволяет избегать передачи лишней информации.</li>
71
<li><strong>Агрегация данных.</strong>С помощью одного запроса можно получить данные сразу из нескольких источников. При использовании других видов API для этого потребовалось бы последовательно выполнить несколько запросов.</li>
71
<li><strong>Агрегация данных.</strong>С помощью одного запроса можно получить данные сразу из нескольких источников. При использовании других видов API для этого потребовалось бы последовательно выполнить несколько запросов.</li>
72
<li><strong>Эффективность.</strong>По сети не передаются лишние данные, а это снижает нагрузку на сервер и экономит ресурсы сети.</li>
72
<li><strong>Эффективность.</strong>По сети не передаются лишние данные, а это снижает нагрузку на сервер и экономит ресурсы сети.</li>
73
</ul><p><strong>Минусы GraphQL</strong></p>
73
</ul><p><strong>Минусы GraphQL</strong></p>
74
<ul><li><strong>Сложность настройки.</strong>Внедрение и настройка GraphQL занимает больше времени в сравнении с REST.</li>
74
<ul><li><strong>Сложность настройки.</strong>Внедрение и настройка GraphQL занимает больше времени в сравнении с REST.</li>
75
<li><strong>Безопасность.</strong>Сложные составные запросы остаются уязвимыми для хакерских атак, поэтому требуется дополнительная защита.</li>
75
<li><strong>Безопасность.</strong>Сложные составные запросы остаются уязвимыми для хакерских атак, поэтому требуется дополнительная защита.</li>
76
<li><strong>Экосистема.</strong>Для GraphQL доступно меньше инструментов и библиотек, чем для REST.</li>
76
<li><strong>Экосистема.</strong>Для GraphQL доступно меньше инструментов и библиотек, чем для REST.</li>
77
</ul><p>RPC - это протокол, который позволяет программе вызывать функции, находящиеся на удалённом сервере, как если бы они выполнялись локально на клиенте. RPC API отправляет на сервер запрос с указанием метода и необходимыми параметрами, а в ответ получает результат выполнения метода. Существуют различные реализации RPC - например, gRPC от Google и tRPC, построенный на языке TypeScript.</p>
77
</ul><p>RPC - это протокол, который позволяет программе вызывать функции, находящиеся на удалённом сервере, как если бы они выполнялись локально на клиенте. RPC API отправляет на сервер запрос с указанием метода и необходимыми параметрами, а в ответ получает результат выполнения метода. Существуют различные реализации RPC - например, gRPC от Google и tRPC, построенный на языке TypeScript.</p>
78
<p><strong>Плюсы RPC</strong></p>
78
<p><strong>Плюсы RPC</strong></p>
79
<ul><li><strong>Прост в использовании.</strong>Удалённые функции вызываются так же просто, как локальные, что значительно сокращает кодовую базу.</li>
79
<ul><li><strong>Прост в использовании.</strong>Удалённые функции вызываются так же просто, как локальные, что значительно сокращает кодовую базу.</li>
80
<li><strong>Высокая производительность.</strong>Некоторые реализации RPC API используют бинарные форматы передачи данных и протокол HTTP/2, что ускоряет взаимодействие с удалённым сервером.</li>
80
<li><strong>Высокая производительность.</strong>Некоторые реализации RPC API используют бинарные форматы передачи данных и протокол HTTP/2, что ускоряет взаимодействие с удалённым сервером.</li>
81
</ul><p><strong>Минусы RPC</strong></p>
81
</ul><p><strong>Минусы RPC</strong></p>
82
<ul><li><strong>Меньшая совместимость.</strong>Освоить RPC сложнее, чем другие виды API, а ещё надо освоить язык описания интерфейсов (IDL, interface definition language).</li>
82
<ul><li><strong>Меньшая совместимость.</strong>Освоить RPC сложнее, чем другие виды API, а ещё надо освоить язык описания интерфейсов (IDL, interface definition language).</li>
83
<li><strong>Ограниченная гибкость.</strong>RPC не просто запрашивает ресурсы с удалённого сервера, а просит выполнить определённую функцию и вернуть результат. Такой тип взаимодействия сложнее использовать в современных веб-приложениях.</li>
83
<li><strong>Ограниченная гибкость.</strong>RPC не просто запрашивает ресурсы с удалённого сервера, а просит выполнить определённую функцию и вернуть результат. Такой тип взаимодействия сложнее использовать в современных веб-приложениях.</li>
84
</ul><p>Интеграция API - это процесс, в рамках которого несколько приложений соединяются между собой с помощью API и обмениваются данными. Так один сервис может использовать возможности другого, что удобно для конечного пользователя.</p>
84
</ul><p>Интеграция API - это процесс, в рамках которого несколько приложений соединяются между собой с помощью API и обмениваются данными. Так один сервис может использовать возможности другого, что удобно для конечного пользователя.</p>
85
<p>Например, на главной странице "Яндекса", кроме строки поиска, есть новостная лента, данные о пробках в городе, погода, курсы валют и другая полезная информация. Эти данные на страницу поставляют сторонние сервисы, интегрированные с помощью API.</p>
85
<p>Например, на главной странице "Яндекса", кроме строки поиска, есть новостная лента, данные о пробках в городе, погода, курсы валют и другая полезная информация. Эти данные на страницу поставляют сторонние сервисы, интегрированные с помощью API.</p>
86
<p>Рассмотрим ещё один пример. Представьте, что у вас есть интернет-магазин и вы хотите автоматизировать процесс доставки. Для этого надо интегрировать API службы доставки. Тогда весь процесс обработки заказа будет выглядеть следующим образом:</p>
86
<p>Рассмотрим ещё один пример. Представьте, что у вас есть интернет-магазин и вы хотите автоматизировать процесс доставки. Для этого надо интегрировать API службы доставки. Тогда весь процесс обработки заказа будет выглядеть следующим образом:</p>
87
<ul><li>Интернет-магазин получает данные заказа (адрес доставки, вес посылки и габариты) и отправляет их в службу доставки через API.</li>
87
<ul><li>Интернет-магазин получает данные заказа (адрес доставки, вес посылки и габариты) и отправляет их в службу доставки через API.</li>
88
<li>Служба принимает эти данные, обрабатывает их и возвращает информацию о стоимости и времени доставки.</li>
88
<li>Служба принимает эти данные, обрабатывает их и возвращает информацию о стоимости и времени доставки.</li>
89
<li>Магазин показывает эту информацию покупателю.</li>
89
<li>Магазин показывает эту информацию покупателю.</li>
90
</ul><p>С помощью интеграции API можно также подключить сервис приёма платежей или выводить в карточках товаров отзывы с других площадок.</p>
90
</ul><p>С помощью интеграции API можно также подключить сервис приёма платежей или выводить в карточках товаров отзывы с других площадок.</p>
91
<p>Программные интерфейсы сервисов и библиотек позволяют разработчикам не изобретать велосипед. Зачем писать код, когда можно воспользоваться готовым?</p>
91
<p>Программные интерфейсы сервисов и библиотек позволяют разработчикам не изобретать велосипед. Зачем писать код, когда можно воспользоваться готовым?</p>
92
<p>Вот какие возможности даёт API:</p>
92
<p>Вот какие возможности даёт API:</p>
93
<ul><li><strong>Предоставляет доступ к готовым инструментам.</strong>Например, к функциям библиотеки для машинного обучения TensorFlow - они помогают быстро создать нейросеть, не тратя время на разработку инструментов с нуля.</li>
93
<ul><li><strong>Предоставляет доступ к готовым инструментам.</strong>Например, к функциям библиотеки для машинного обучения TensorFlow - они помогают быстро создать нейросеть, не тратя время на разработку инструментов с нуля.</li>
94
<li><strong>Повышает безопасность.</strong>API позволяет вынести в отдельное приложение функциональность, которая должна быть защищена. Так снижается вероятность некорректного использования этих функций другими программами.</li>
94
<li><strong>Повышает безопасность.</strong>API позволяет вынести в отдельное приложение функциональность, которая должна быть защищена. Так снижается вероятность некорректного использования этих функций другими программами.</li>
95
<li><strong>Связывает разные системы.</strong>Если вам нужно подключить к сайту платёжную систему или авторизацию через соцсети, без API не обойтись.</li>
95
<li><strong>Связывает разные системы.</strong>Если вам нужно подключить к сайту платёжную систему или авторизацию через соцсети, без API не обойтись.</li>
96
<li><strong>Снижает стоимость разработки.</strong>Часто бывает, что дешевле воспользоваться платным API, чем создавать функциональность с нуля.</li>
96
<li><strong>Снижает стоимость разработки.</strong>Часто бывает, что дешевле воспользоваться платным API, чем создавать функциональность с нуля.</li>
97
</ul><p>Стороннее API обычно безопасное, потому что над ним работает коммерческая организация или целое сообщество разработчиков. И конечно, с его помощью работа даже над сложными проектами становится проще и приятнее.</p>
97
</ul><p>Стороннее API обычно безопасное, потому что над ним работает коммерческая организация или целое сообщество разработчиков. И конечно, с его помощью работа даже над сложными проектами становится проще и приятнее.</p>
98
Написали одну строчку кода, подключили API - робот побежал<em>Иллюстрация: Катя Павловская для Skillbox Media</em><p>Никаких специальных правил или ограничений набора функций для API нет. Разработчики включают в него методы, которые, по их мнению, будут полезны для взаимодействия клиентских приложений с их сервисом.</p>
98
Написали одну строчку кода, подключили API - робот побежал<em>Иллюстрация: Катя Павловская для Skillbox Media</em><p>Никаких специальных правил или ограничений набора функций для API нет. Разработчики включают в него методы, которые, по их мнению, будут полезны для взаимодействия клиентских приложений с их сервисом.</p>
99
<p>Например, в API для анализа текстов будут функции поиска всех однокоренных слов, подсчёта количества союзов и выявления часто встречающихся словосочетаний.</p>
99
<p>Например, в API для анализа текстов будут функции поиска всех однокоренных слов, подсчёта количества союзов и выявления часто встречающихся словосочетаний.</p>
100
<p>Функции API могут решать не только утилитарные задачи конкретных приложений. Это может стать элементом маркетинга, когда доступ к API предлагается как отдельная услуга.</p>
100
<p>Функции API могут решать не только утилитарные задачи конкретных приложений. Это может стать элементом маркетинга, когда доступ к API предлагается как отдельная услуга.</p>
101
API - это меню, только вместо еды там функции<em>Иллюстрация: Катя Павловская для Skillbox Media</em><p>Компании - особенно те, что разрабатывают сложные приложения, - часто предоставляют клиентам доступ к API своих продуктов. Например, создатели видеоредактора могут брать дополнительную плату за рендеринг видео на своих серверах. По API они принимают от клиентов все файлы и инструкции, а возвращают готовый ролик.</p>
101
API - это меню, только вместо еды там функции<em>Иллюстрация: Катя Павловская для Skillbox Media</em><p>Компании - особенно те, что разрабатывают сложные приложения, - часто предоставляют клиентам доступ к API своих продуктов. Например, создатели видеоредактора могут брать дополнительную плату за рендеринг видео на своих серверах. По API они принимают от клиентов все файлы и инструкции, а возвращают готовый ролик.</p>
102
Отправили картинки - получили готовое видео<em>Иллюстрация: Катя Павловская для Skillbox Media</em><p>Например, "Яндекс" предоставляет платные API таких технологий:</p>
102
Отправили картинки - получили готовое видео<em>Иллюстрация: Катя Павловская для Skillbox Media</em><p>Например, "Яндекс" предоставляет платные API таких технологий:</p>
103
<ul><li>переводчика с машинным обучением;</li>
103
<ul><li>переводчика с машинным обучением;</li>
104
<li>системы распознавания и синтеза речи;</li>
104
<li>системы распознавания и синтеза речи;</li>
105
<li>платформы облачных вычислений и так далее.</li>
105
<li>платформы облачных вычислений и так далее.</li>
106
</ul><p>Популярные социальные сети тоже предоставляют доступ к своим API. С помощью них можно, например, создать игру для "ВКонтакте" или добавить на сайт авторизацию через Google.</p>
106
</ul><p>Популярные социальные сети тоже предоставляют доступ к своим API. С помощью них можно, например, создать игру для "ВКонтакте" или добавить на сайт авторизацию через Google.</p>
107
<p>При этом компании обычно не раскрывают принципы реализации своих интерфейсов, поэтому для программистов они остаются "чёрными ящиками".</p>
107
<p>При этом компании обычно не раскрывают принципы реализации своих интерфейсов, поэтому для программистов они остаются "чёрными ящиками".</p>
108
<p>Мы уже столько говорим об API, но так и не показали, как с ним работать. На самом деле здесь нет ничего сложного. Как вызывать функции конкретного API - написано в документации, а принципы работы примерно одни и те же.</p>
108
<p>Мы уже столько говорим об API, но так и не показали, как с ним работать. На самом деле здесь нет ничего сложного. Как вызывать функции конкретного API - написано в документации, а принципы работы примерно одни и те же.</p>
109
<p>Вот пример вызова методов библиотек в языке Python:</p>
109
<p>Вот пример вызова методов библиотек в языке Python:</p>
110
# Подключаем библиотеку import numpy as np # Вызываем метод, который возвращает модуль числа -5 x = np.abs(-5) # Выводим переменную x print(x)<p>Если API предоставляет функции через интернет (Web API), нужно отправить на сервер HTTP-запрос с данными в формате JSON. Пример синтеза речи с помощью API Yandex.SpeechKit:</p>
110
# Подключаем библиотеку import numpy as np # Вызываем метод, который возвращает модуль числа -5 x = np.abs(-5) # Выводим переменную x print(x)<p>Если API предоставляет функции через интернет (Web API), нужно отправить на сервер HTTP-запрос с данными в формате JSON. Пример синтеза речи с помощью API Yandex.SpeechKit:</p>
111
import requests import json # Помещаем в переменную API_URL адрес API API_URL = "https://tts.api.cloud.yandex.net/speech/v1/tts:synthesize" # Помещаем в словарь data данные для отправки в API Yandex.SpeechKit data = { "text": "Привет! Это пример кода для статьи про API в Skillbox Media", "lang": "ru-RU", "speed": 1, "voice": "filipp", "emotion": "good" } # Преобразуем данные в строку в формате JSON json_str = json.dumps(data) # Отправляем данные на сервер и получаем ответ answer = requests.post(API_URL, json_str)<p>Можете запустить этот код и послушать результат.</p>
111
import requests import json # Помещаем в переменную API_URL адрес API API_URL = "https://tts.api.cloud.yandex.net/speech/v1/tts:synthesize" # Помещаем в словарь data данные для отправки в API Yandex.SpeechKit data = { "text": "Привет! Это пример кода для статьи про API в Skillbox Media", "lang": "ru-RU", "speed": 1, "voice": "filipp", "emotion": "good" } # Преобразуем данные в строку в формате JSON json_str = json.dumps(data) # Отправляем данные на сервер и получаем ответ answer = requests.post(API_URL, json_str)<p>Можете запустить этот код и послушать результат.</p>
112
<p>Также бывают косвенные вызовы API - когда вызов происходит при участии посредника (другой функции или другого API). Например, когда пользователь нажимает кнопку "Обновить", он тоже взаимодействует с API браузера, но делает это не напрямую, а через графический интерфейс.</p>
112
<p>Также бывают косвенные вызовы API - когда вызов происходит при участии посредника (другой функции или другого API). Например, когда пользователь нажимает кнопку "Обновить", он тоже взаимодействует с API браузера, но делает это не напрямую, а через графический интерфейс.</p>
113
<p>API - это набор правил, по которым приложения или части программы общаются друг с другом. API можно встретить везде - от операционных систем до веб-приложений. Он позволяет разработчикам использовать готовые инструменты и не переживать за их реализацию, а ещё делает приложения безопаснее и помогает связывать разные программы между собой.</p>
113
<p>API - это набор правил, по которым приложения или части программы общаются друг с другом. API можно встретить везде - от операционных систем до веб-приложений. Он позволяет разработчикам использовать готовые инструменты и не переживать за их реализацию, а ещё делает приложения безопаснее и помогает связывать разные программы между собой.</p>
114
<p>API экономит время программистов и уменьшает расходы бизнеса на разработку.</p>
114
<p>API экономит время программистов и уменьшает расходы бизнеса на разработку.</p>
115
<a>Курс с трудоустройством: "Веб-разработчик" Узнать о курсе</a>
115
<a>Курс с трудоустройством: "Веб-разработчик" Узнать о курсе</a>