Что такое API сайта и для чего он нужен
В данной статье подробно расскажем про API: что это такое и как работает. Каждый день любой пользователь интернета использует подключение по API, даже не подозревая об этом.
Application Programming Interface (API) (программный интерфейс приложения) — набор инструментов, которые позволяют взаимодействовать программам и приложениям друг с другом, использовать функции одного внутри другого.
Чтобы было понятнее, приведем пример. Многие сайты используют у себя на странице контактов Яндекс.Карты, это возможно благодаря взаимодействию через API. Также самый популярный способ работы с помощью API соединения – это проведение платежей.
Интерфейс API позволяет разработчику получать доступ к функциям одного приложения или веб-сайта из другого. Говоря простым языком, дает возможность увеличивать функциональность своего продукта с меньшими усилиями.
Зачем, когда и кому нужен API
Для чего нужен API? Не все компании могут позволить себе разработку того или иного сервиса: нет финансов, нет разработчиков, нет времени.
Модуль API обеспечивает взаимодействие одного приложения с другим. С его помощью можно внедрить в свой продукт функции стороннего приложения доработав их “под себя”. Доработкой могут заниматься программисты компании, экономя при этом на времени, которое потребовалось бы для разработки программы с нуля.
Выделим преимущества API:
- упрощение и ускорение выпуска нового продукта,
- безопасная разработка благодаря выводу части функций в отдельное приложение, где эти функции скрыты,
- простота в настройке взаимодействия между программами без необходимости сотрудничества с разработчиками этой программы,
- финансовая выгода, так как не требуется собственная разработка продукта.
Передача данных по API позволяет подключить любую функцию, так как в настоящие время представлен большой выбор API функций.
Типы API, в чем их различия
Доступ к API — что это такое? Это возможность работать с приложением и использовать его функции у себя в приложении, программе или на сайте. В связи с этим различают виды API по типу доступа:
- Внутреннее API. Используются только внутри компании с целью улучшения своих сервисов.
- Партнерское API. Доступ к такому API выдается для определенного круга лиц, например, деловому партнеру. Может предоставляться бесплатно или за определенную сумму, установленную договором.
- Открытое API. Или общедоступное, доступ к нему может получить любой пользователь без ограничений.
Часто в сети встречаются так называемые web API:
- REST (Representational State Transfer) — самые известные стандарты написания API. Это набор шаблонов для создания сервисов с помощью протокола HTTP (протокол передачи данных).
- SOAP (Simple Object Access Protocol) — простой протокол доступа к объектам. SOAP помогает различным операционным системам ладить друг с другом, например, Linux и Windows.
- RPC (Remote Procedure Call ) — протокол удаленного вызова процедур. В этом типе протокола HTTP способ доставки, который не является частью API. Выполнение различных действий в протоколе RPC зашито в само тело запроса и ответа.
Как работает API
API — это промежуточный интерфейс между двумя программами, своеобразная прослойка, в которой происходит обмен информацией между приложениями. Это своего рода инструкция, которая говорит как работать той или иной кнопке. Каждый разработчик знает как работать с API, попробуем объяснить эту процедуру для простых пользователей.
Процесс работы с API выглядит следующим образом:
- Разработчик создал свое приложение, программу или операционную систему.
- Затем он описал каким образом другие разработчики могут использовать это приложение, программу и операционную систему — то есть составил API.
- Если вы захотели использовать сервис этого разработчика, то вы берете его API. Он может находится в открытом доступе или выдан вам по договору с компанией-разработчиком.
- С помощью определенной команды вы делаете вызов API в своем приложении и используете необходимые вам инструменты.
Самое главное — вам не нужно знать как работает API-функция, которая вам необходима, вы вызываете ее одной строчкой кода и получаете необходимый результат.
Как пользоваться API
Чтобы узнать, есть ли у сервиса API, достаточно сделать поисковый запрос. Если API существует, то в поисковой выдаче вы получите ссылки на документацию и инструкции к API на сайте разработчика.
Для вызова API необходимо ознакомиться с документацией, которая к нему предоставляется. Доступ к API прописан в инструкции по работе с ним. Обычно необходимо отправить запрос на сервер с помощью http.
Предположим, вы хотите добавить Яндекс.Карты на свой сайт.
- В соответствии с документацией API Яндекс.Карт вам необходимо в заголовке страницы вашего сайта сделать запрос:
- Отдельно получите API-ключ, который требуется для безопасного использования (API Яндекс.Карт является закрытым).
- Создайте контейнер для размещения карты.
- Добавьте код карты.
Примеры использования API
- Яндекс.Карты внутри сервисов доставки еды или такси.

- Метрики и веб-аналитика на сайтах.

- Авторизация на сайте с помощью социальных сетей. Также такую возможность предлагает и сайт Госуслуг.

- Проведение платежей на сайте через платежные системы.

- Сервис Youtube.com предлагает по API делать загрузку видео, управлять плейлистами и подписчиками, обновлять настройки канала.

Заключение
Многие популярные сервисы дают возможность использовать функции своего продукта с помощью API. Интеграция по API может быть платной или бесплатной. Зачастую использовать платный API выгоднее, чем разрабатывать свой сервис с нуля.
API — удобный и простой в использовании инструмент, который позволяет экономить время и финансы компаний, в короткий срок реализуя требуемые функции у себя на сайте.
Чтобы использовать API, изучите его документацию, ознакомьтесь с условиями подключения нужного функционала. Если вас устроили требования к выбранному API, начинайте работу с ним.
Получение доступа

Для безопасности, client_secret отображается в скрытом виде и его копирование доступно только в течение 10 минут — таймер отображается в желтой плашке.
По окончании 10 минут вы не сможете скопировать client_secret. Если вы не успели скопировать client_secret, обратитесь в техподдержку (знак вопроса в правой части страницы или почта ads_api@vk.team).

Страница запроса доступа к API по истечении 10 минут
Важно! Контактные данные в сообщении указать необходимо, даже если вы уже указали их в других полях формы. Эта информация нужна для обеспечения связи с человеком, который в случае возникновения проблемы сможет оперативно решить вопрос на стороне вашего приложения.
Для получения доступа к тестовой среде («песочнице») необходимо:
- Зарегистрироваться/войти в личный кабинет на https://target-sandbox.my.com/ под той учётной записью, для которой хотите получить ключ.
- С помощью формы Службы поддержки подать запрос на предоставление доступа к API. В поле «Сообщение» укажите ту же информацию, которая нужна для доступа к рабочей среде, и отметьте, что доступ требуется для отладки приложения.
Как использовать API сайта, у которого нет API?
У меня достаточно часто появляется задача получить данные от стороннего сайта, при этом далеко не всегда этот сайт предоставляет возможность удобно получить эти данные через API. Единственное решение в таком случае — парсить html содержимое страниц. Когда-то я писал регэкспы, потом появились библиотеки, позволяющие получить нужное содержимое по css-селектору, а сейчас и это кажется сложной задачей, которую хотелось бы упростить.
Сегодня я хочу рассказать вам о моей небольшой библиотеке, позволяющей описать в API-стиле http-запросы и парсить ответ сервера в нужный вам формат.
Примечание: не стоит забывать об авторских правах, если вы используете чужие данные.
Установка
Библиотека доступна к установке через composer, поэтому все, что необходимо сделать — это добавить зависимость «sleeping-owl/apist»: «1.*» в ваш composer.json и вызвать composer update.
У данной библиотеки нет зависимостей от каких-либо фреймворков, поэтому вы можете использовать ее с любым фреймворком, либо же в чистом PHP-проекте. Для сетевых запросов используется Guzzle, для манипуляций с dom-деревом используется «symfony/dom-crawler».
Использование
После установки вы можете приступить к созданию нового класса, олицетворяющего API нужного вам сайта. Библиотека не накладывает никаких ограничений на то, как и где вы будете создавать свой класс. Нужно расширить класс SleepingOwl\Apist\Apist и указать базовый урл:
use SleepingOwl\Apist\Apist; class HabrApi extends Apist < protected $baseUrl = 'http://habrahabr.ru'; >
Это все, что нужно для базового описания. Далее вы можете добавлять в данный класс методы, которые вам нужны:
public function index() < return $this->get('/', [ 'title' => Apist::filter('.page_head .title')->text()->trim(), 'posts' => Apist::filter('.posts .post')->each([ 'title' => Apist::filter('h1.title a')->text(), 'link' => Apist::filter('h1.title a')->attr('href'), 'hubs' => Apist::filter('.hubs a')->each(Apist::filter('*')->text()), 'author' => [ 'username' => Apist::filter('.author a'), 'profile_link' => Apist::filter('.author a')->attr('href'), 'rating' => Apist::filter('.author .rating')->text() ] ]) ]); >
Здесь метод «get» — это тип используемого http-запроса, также доступны остальные методы (post, put, patch, delete и т.д.).
Первый параметр — урл данного метода, он может быть как относительным, так и абсолютным.
Второй параметр — это и есть та основа, из-за которой я создал эту библиотеку. Он описывает структуру, которую необходимо получить в результате вызова данного метода. Это может быть как массив, так и одиночное значение. То есть для описанного выше метода результат будет такого вида:
$api = new HabrApi; $result = $api->index();
Примечание: результат будет типа array, json-формат здесь использован для удобства.
Третьим опциональным параметром могут идти любые дополнительные параметры запроса, get или post переменные, загружаемые файлы, заголовки запроса и т.п. С полным списком можно ознакомиться в документации Guzzle.
Создание фильтров
Пара слов о том, как это работает: каждый объект, созданный через Apist::filter($cssSelector) после загрузки данных заменяется на нужное значение, он сохраняет не только сам селектор, по которому он будет искать данные, но и всю вереницу вызовов, которые к нему были применены. После загрузки данных он пытается применить эти методы к найденным элементам.
-
Методы класса Symfony\Component\DomCrawler\Crawler для перемещения по dom-дереву и получению данных:
Apist::filter('.navbar li')->eq(3)->filter('a.active')->text(); Apist::filter('input')->first()->attr('value'); Apist::filter('.content')->html();
Apist::filter('body')->element(); // Вернет объект класса Symfony\Component\DomCrawler\Crawler, отвечающий за элемент body Apist::filter('.post')->each(. ); // Этот объект будет заменен на массив, каждый элемент которого будет создан согласно схеме, которая была передана параметром. Все внутренние css-селекторы будут применены относительно текущего элемента. Apist::filter('.errors')->exists()->then(. )->else(. ); // Описывает условие, если элемент с классом "errors" был найден, то используется значение из блока "then", иначе из блока "else"
Apist::filter('.title')->text()->mb_strtoupper()->trim()->substr(5); function myFunc($string, $find, $replace) < return str_replace($find, $replace, $string); >Apist::filter('.title')->text()->myFunc('My', 'Your'); // Если убрать ->text(), то в функцию будет передан объект, а не строка. Это можно использовать в своих целях при необходимости.
Upd: в версии 1.2.0 добавилась возможность инициализировать апи из yaml файла, подробнее можно посмотреть в документации.
Получение токена доступа и авторизация запросов
Доступ к GigaChat API предоставляется физическим лицам, юридическим лицам и индивидуальным предпринимателям.
Токен доступа передается в заголовке Authorization и нужен для авторизации запросов к GigaChat API по протоколу OAuth 2.0.
Для получения токена доступа нужно подключить проект GigaChat API и получить авторизационные данные. После чего вы сможете обменять их на токен доступа.
В этом разделе вы узнаете как получить токен доступа и сделать свой первый запрос.
Шаг 1. Подключение GigaChat API и получение авторизационных данных
Подключить GigaChat API и получить авторизационные данные можно в соответствующем проекте в личном кабинете.
- Зарегистрируйтесь в личном кабинете.
- В зависимости от вашего статуса, выполните одну из следующих инструкций:
- для физических лиц;
- для юридических лиц и индивидуальных предпринимателей.
Вы можете самостоятельно сгенерировать авторизационные данные.
Для этого нужно закодировать в Base64 значения полей Client Id и Client Secret, доступные после подключения GigaChat API.
Шаг 2. Получение токена доступа в обмен на авторизационные данные
Для получения токена доступа отправьте POST-запрос на адрес:
https://ngw.devices.sberbank.ru:9443/api/v2/oauth
Токен доступа действует в течение 30 минут с момента выпуска. Сервис аутентификации в открытом виде передает срок окончания действия токена в поле expires_at .
Пример запроса
curl --location --request POST 'https://ngw.devices.sberbank.ru:9443/api/v2/oauth' \ --header 'Authorization: Basic ' \ --header 'RqUID: ' \ --header 'Content-Type: application/x-www-form-urlencoded' \ --data-urlencode 'scope='
Заголовки запроса
Авторизационные данные, которые представляют собой значения полей Client Id и Client Secret, закодированные в Base64.
В проекте GigaChat API нажмите Сгенерировать новый Client Secret и скопируйте значение из поля Авторизационные данные
Уникальный идентификатор запроса. Формируется по паттерну
(([0-9a-fA-F-])36)
Параметр для журналирования входящих вызовов и разбора инцидентов. Для создания уникального идентификатора можно использовать стандартные библиотеки и классы для генерации UUID и GUID .
Для тестирования API вы можете использовать онлайн-генератор uuid Online UUID Generator.
Тело запроса
Версия API, к которой предоставляется доступ. Версию API вы найдете в личном кабинете в поле Scope после подключения сервиса.
- GIGACHAT_API_PERS — доступ для физических лиц.
- GIGACHAT_API_CORP — доступ для юридических лиц и индивидуальных предпринимателей.
Пример ответа
"access_token": "eyJlbmMiOiJBMjU2Q0JDLUhTNTEyIiwiYWxnIjoiUlNBLU9BRVAtMjU2In0.DCXAAnwXjmRleOrIJcXDWbQwsP5UGSptcY3x5XXRkYZm6x3QkDQBL63DKQZzwrwmtuFbKajq6ULHuQhsmGax-l_R6AhRkr7pWzJi1jpzCenq9PAN2UjF0BX_IiDRgmEExH6_2OtHaJ_7KbudukIOLEgxD9l8WcXFY992dgqLL6eK2nnnUvyfmr4ITc9PWuAFsMIO6jweNFw0e9vRYEDkAbnv9EGR-w9CGwfBsHNWZwZlo7fyu07fkSfmqmGdBvU4344344luNNrHwktSGOzNhpLhu0-0A3KI950vmp_37QY8isDi3epGU3HShdrBZkk70fdXxBKQA.MV2IksoyxTV_c-qm6hSXaQ.LUT4JqOzKqmFOR07-Asq7Fhqj_eYSTXcsJAK-JchmM1QUqhPLBXsUyXXh6ZcjsnN7Q0QXzuBlSjaBWekgWANDirI6HP_MsEM4FxfJAOh73aowC700cEQPPYAxzPYG0d4bOqsZh8Ss57lJB2VM7M6Y2FcG2hb5Q0i2zPskqSWxXejuCyr2uIlY7Fe4bu4NUqtCaKJVwqriVWLfbA0OzZyA0osDc42Ba0u1adFAdaZDCE.IlKOixP8hSUimEI2pdP118Tx0StZjcLdbSauE5R0YAA", "expires_at": 1617814516729 >
Сгенерированный токен доступа, необходимый для авторизации запросов к API
Unix-время завершения действия токена доступа в миллисекундах. Токен доступа действует в течение 30 минут
Коды ошибок
| Ошибка | Сообщение | Описание |
|---|---|---|
| 400 | Bad request format | Неверный формат запроса |
| 401 | Unauthorized | Ошибка авторизации |
| 500 | Internal Server Error | Внутренняя ошибка сервера |
Пример ответа в случае ошибки 400
"code": 1, "message": "scope data format invalid" >
Шаг 3. Используйте токен доступа
Сделайте запрос с заголовком Authorization с Bearer Access token . Например, получите список доступных моделей:
curl --location 'https://gigachat.devices.sberbank.ru/api/v1/models' \ --header 'Authorization: Bearer '
При выполнении запроса проверяется:
- сессия токена;
- наличие действующей подписки у приложения, которое выполняет запрос;
- запрос и ответ на соответствие схемам API.
Возможные результаты запроса:
- Если токен валиден, запрос будет передан дальше в GigaChat API: 200 OK .
- Если токена нет или формат токена неверен, то придет сообщение об ошибке из-за неудачной аутентификации: .
- Если токен есть, но просрочен, то придет сообщение об ошибке из-за истечения срока действия токена: . В этом случае вам нужно получить новый валидный токен.
Перед каждым запросом всегда проверяйте время жизни токена. Если до его истечения остается менее минуты, получите новый токен доступа.
Смотрите также
ПАО Сбербанк использует cookie для персонализации сервисов и удобства пользователей.
Вы можете запретить сохранение cookie в настройках своего браузера.
Документация
Наши продукты
Юридические документы
© 1997–2023 ПАО СберБанк. Генеральная лицензия на осуществление банковских операций от 11 августа 2015 года. Регистрационный номер — 1481