Что такое API / Habr
Содержание
Слово «API» мелькает в вакансиях даже для начинающих тестировщиков. То REST API, то SOAP API, то просто API. Что же это за зверь такой? Давайте разбираться!
— А зачем это мне? Я вообще-то web тестирую! Вот если пойду в автоматизацию, тогда да… Ну, еще это в enterprise тестируют, я слышал…
А вот и нет! Про API полезно знать любому тестировщику. Потому что по нему системы взаимодействуют между собой. И это взаимодействие вы видите каждый день даже на самых простых и захудалых сайтах.
Любая оплата идет через API платежной системы. Купил билет в кино? Маечку в онлайн-магазине? Книжку? Как только жмешь «оплатить», сайт соединяет тебя с платежной системой.
Но даже если у вас нет интеграции с другими системами, у вас всё равно есть API! Потому что система внутри себя тоже общается по api. И пока фронт-разработчик усиленно пилит GUI (графический интерфейс), вы можете:
- скучать в ожидании;
- проверять логику работы по API
Конечно, я за второй вариант! Так что давайте разбираться, что же такое API. Можно посмотреть видео на youtube, или прочитать дальше в виде статьи.
Что такое API
API (Application programming interface) — это контракт, который предоставляет программа. «Ко мне можно обращаться так и так, я обязуюсь делать то и это».
Если переводить на русский, это было бы слово «договор». Договор между двумя сторонами, как договор на покупку машины:
- мои обязанности — внести такую то сумму,
- обязанность продавца — дать машину.
Перевести можно, да. Но никто так не делает ¯\_(ツ)_/¯
Все используют слово «контракт». Так принято. К тому же это слово входит в название стиля разработки:
- Code first — сначала пишем код, потом по нему генерируем контракт
- Contract first — сначала создаем контракт, потом по нему пишем или генерируем код (в этой статье я буду говорить именно об этом стиле)
Мы же не говорим «контракт на продажу машины»? Вот и разработчики не говорят «договор». Негласное соглашение.
API — набор функций
Когда вы покупаете машину, вы составляете договор, в котором прописываете все важные для вас пункты. Точно также и между программами должны составляться договоры. Они указывают, как к той или иной программе можно обращаться.
Соответственно, API отвечает на вопрос “Как ко мне, к моей системе можно обратиться?”, и включает в себя:
- саму операцию, которую мы можем выполнить,
- данные, которые поступают на вход,
- данные, которые оказываются на выходе (контент данных или сообщение об ошибке).
Тут вы можете мне сказать:
— Хмм, погоди. Операция, данные на входе, данные на выходе — как-то всё это очень сильно похоже на описание функции!
Если вы когда-то сталкивались с разработкой или просто изучали язык программирования, вы наверняка знаете, что такое функция. Фактически у нас есть данные на входе, есть данные на выходе, и некая магия, которая преобразует одно в другое.
И да! Вы будете правы в том, что определения похожи. Почему? Да потому что API — это набор функций. Это может быть одна функция, а может быть много.
Как составляется набор функций
Да без разницы как. Как разработчик захочет, так и сгруппирует. Например, можно группировать API по функционалу. То есть:
- отдельно API для входа в систему, где будет регистрация и авторизация;
- отдельно API для отчетности — отчет 1, отчет 2, отчет 3… отчет N. Для разных отчетов у нас разные формулы = разные функции. И все мы их собираем в один набор, api для отчетности.
- отдельно API платежек — для работы с каждым банком своя функция.
- …
Можно не группировать вообще, а делать одно общее API.
Можно сделать одно общее API, а остальные «под заказ». Если у вас коробочный продукт, то в него обычно входит набор стандартных функций. А любые хотелки заказчиков выносятся отдельно.
Получается, что в нашей системе есть несколько разных API, на каждое из которых у нас написан контракт. В каждом контракте четко прописано, какие операции можно выполнять, какие функции там будут
И конечно, функции можно переиспользовать. То есть одну и ту же функцию можно включать в разные наборы, в разные апи. Никто этого не запрещает.
Получается, что разработчик придумывает, какое у него будет API. Либо делает общее, либо распределяет по функционалу или каким-то своим критериям, и в каждое апи добавляет тот набор функций, который ему необходим.
При чем тут слово «интерфейс»
— Минуточку, Оля! Ты же сама выше писала, что API — это Application programming interface. Почему ты тогда говоришь о контракте, хотя там слово интерфейс?
Да потому, что в программировании контракт — это и есть интерфейс. В классическом описании ООП (объектно-ориентированного программирования) есть 3 кита:
- Инкапсуляция
- Наследование
- Полиморфизм
Инкапсуляция — это когда мы скрываем реализацию. Для пользователя все легко и понятно. Нажал на кнопочку — получил отчет. А как это работает изнутри — ему все равно. Какая база данных скрыта под капотом? Oracle? MySQL? На каком языке программирования написана программа? Как именно организован код? Не суть. Программа предоставляет интерфейс, им он и пользуется.
Не всегда программа предоставляет именно графический интерфейс. Это может быть SOAP, REST интерфейс, или другое API. Чтобы использовать этот интерфейс, вы должны понимать:
- что подать на вход;
- что получается на выходе;
- какие исключения нужно обработать.
Пользователи работают с GUI — graphical user interface. Программы работают с API — Application programming interface. Им не нужна графика, только контракт.
Вызвать апи можно как напрямую, так и косвенно.
Напрямую:
- Система вызывает функции внутри себя
- Система вызывает метод другой системы
- Человек вызывает метод
- Автотесты дергают методы
Косвенно:
- Пользователь работает с GUI
Вызов API напрямую
1. Система вызывает функции внутри себя
Разные части программы как-то общаются между собой. Они делают это на программном уровне, то есть на уровне API!
Это самый «простой» в использовании способ, потому что автор API, которое вызывается — разработчик. И он же его потребитель! А значит, проблемы с неактуальной документацией нет =)
Шучу, проблемы с документацией есть всегда. Просто в этом случае в качестве документации будут комментарии в коде. А они, увы, тоже бывают неактуальны. Или разработчики разные, или один, но уже забыл, как делал исходное api и как оно должно работать…
2. Система вызывает метод другой системы
А вот это типичный кейс, которые тестируют тестировщики в интеграторах. Или тестировщики, которые проверяют интеграцию своей системы с чужой.
Одна система дергает через api какой-то метод другой системы. Она может попытаться получить данные из другой системы. Или наоборот, отправить данные в эту систему.
Допустим, я решила подключить подсказки из Дадаты к своему интернет-магазинчику, чтобы пользователь легко ввел адрес доставки.Я подключаю подсказки по API. И теперь, когда пользователь начинает вводить адрес на моем сайте, он видит подсказки из Дадаты. Как это получается:
- Он вводит букву на моем сайте
- Мой сайт отправляет запрос в подсказки Дадаты по API
- Дадата возвращает ответ
- Мой сайт его обрабатывает и отображает результат пользователю
Вон сколько шагов получилось! И так на каждый введенный символ. Пользователь не видит этого взаимодействия, но оно есть.
И, конечно, не забываем про кейс, когда мы разрабатываем именно API-метод. Который только через SOAP и можно вызвать, в интерфейсе его нигде нет. Что Заказчик заказал, то мы и сделали ¯\_(ツ)_/¯
Пример можно посмотреть в Users. Метод MagicSearch создан на основе реальных событий. Хотя надо признать, в оригинале логика еще замудренее была, я то под свой сайт подстраивала.Но тут фишка в том, что в самой системе в пользовательском интерфейсе есть только обычный поиск, просто строка ввода. Ну, может, парочка фильтров. А вот для интеграции нужна была целая куча доп возможностей, что и было сделано через SOAP-метод.
Функционал супер-поиска доступен только по API, пользователь в интерфейсе его никак не пощупает.
В этом случае у вас обычно есть ТЗ, согласно которому работает API-метод. Ваша задача — проверить его. Типичная задача тестировщика, просто добавьте к стандартным тестам на тест-дизайн особенности тестирования API, и дело в шляпе!
(что именно надо тестировать в API — я расскажу отдельной статьей чуть позднее)
3. Человек вызывает метод
Причины разные:
- Для ускорения работы
- Для локализации бага (проблема где? На сервере или клиенте?)
- Для проверки логики без докруток фронта
Если система предоставляет API, обычно проще дернуть его, чем делать то же самое через графический интерфейс. Тем более что вызов API можно сохранить в инструменте. Один раз сохранил — на любой базе применяешь, пусть даже она по 10 раз в день чистится.
Для примера снова идем в Users. Если мы хотим создать пользователя, надо заполнить уйму полей!Конечно, это можно сделать в помощью специальных плагинов типа Form Filler. Но что, если вам нужны адекватные тестовые данные под вашу систему? И на русском языке?
Заполнение полей вручную — грустно и уныло! А уж если это надо повторять каждую неделю или день на чистой тестовой базе — вообще кошмар. Это сразу первый приоритет на автоматизацию рутинных действий.
И в данном случае роль автоматизатора выполняет… Postman. Пользователя можно создать через REST-запрос CreateUser. Один раз прописали нормальные “как настоящие” данные, каждый раз пользуемся. Профит!
Вместо ручного заполнения формы (1 минута бездумного заполнения полей значениями «лпрулпк») получаем 1 секунду нажатия на кнопку «Send». При этом значения будут намного адекватнее.
А еще в постмане можно сделать отдельную папку подготовки тестовой базы, напихать туда десяток запросов. И вот уже на любой базе за пару секунд вы получаете столько данных, сколько вручную вбивали бы часами!
Если вы нашли баг и не понимаете, на кого его вешать — разработчика front-end или back-end, уберите все лишнее. Вызовите метод без графического интерфейса. А еще вы можете тестировать логику программы, пока интерфейс не готов или сломан.
4. Автотесты дергают методы
Есть типичная пирамида автоматизации:
- GUI-тесты — честный тест, «как это делал бы пользователь».
- API-тесты — опускаемся на уровень ниже, выкидывая лишнее.
- Unit-тесты — тесты на отдельную функцию
Слово API как бы намекает на то, что будет использовано в тестах ツ
Допустим, у нас есть:
- операция: загрузка отчета;
- на входе: данные из ручных или автоматических корректировок или из каких-то других мест;
- на выходе: отчет, построенный по неким правилам
Правила построения отчета:
- Ячейка 1: Х — Y
- Ячейка 2: Z * 6
- …
GUI-тесты — честный тест, робот делает все, что делал бы пользователь. Открывает браузер, тыкает на кнопочки… Но если что-то упадет, будете долго разбираться, где именно.
API-тесты — все то же самое, только без браузера. Мы просто подаем данные на вход и проверяем данные на выходе. Например, можно внести итоговый ответ в эксельку, и пусть робот выверяет ее, правильно ли заполняются данные? Локализовать проблему становится проще.
Unit-тесты — это когда мы проверяем каждую функцию отдельно. Отдельно смотрим расчет для ячейки 1, отдельно — для ячейки 2, и так далее. Такие тесты шустрее всего гоняются и баги по ним легко локализовать.
Косвенный вызов API
Когда пользователь работает с GUI, на самом деле он тоже работает с API. Просто не знает об этом, ему это просто не нужно.
То есть когда пользователь открывает систему и пытается загрузить отчет, ему не важно, как работает система, какой там magic внутри. У него есть кнопочка «загрузить отчет», на которую он и нажимает. Пользователь работает через GUI (графический пользовательский интерфейс).
Но на самом деле под этим графическим пользовательским интерфейсом находится API. И когда пользователь нажимает на кнопочку, кнопочка вызывает функцию построения отчета.
А функция построения отчета уже может вызывать 10 разных других функций, если ей это необходимо.
И вот уже пользователь видит перед собой готовый отчет. Он вызвал сложное API, даже не подозревая об этом!
В первую очередь, мы подразумеваем тестирование ЧЕРЕЗ API. «Тестирование API» — общеупотребимый термин, так действительно говорят, но технически термин некорректен. Мы не тестируем API, мы не тестируем GUI (графический интерфейс). Мы тестируем какую-то функциональность через графический или программный интерфейс.
Но это устоявшееся выражение. Можно использовать его и говорить “тестирование API”. И когда мы про это говорим, мы имеем в виду:
- автотесты на уровне API
- или интеграцию между двумя разными системами.
Интеграция — когда одна система общается с другой по какому-то протоколу передачи данных. Это называется Remote API, то есть общение по сети, по некоему протоколу (HTTP, JMS и т.д.). В противовес ему есть еще Local API (он же «Shared memory API») — это то API, по которому программа общается сама с собой или общается с другой программой внутри одной виртуальной памяти.
Когда мы говорим про тестирование API, чаще всего мы подразумеваем тестирование Remote API. Когда у нас есть две системы, находящихся на разных компьютерах, которые как-то между собой общаются.
И если вы видите в вакансии «тестирование API», скорее всего это подразумевает умение вызвать SOAP или REST сервис и протестировать его. Хотя всегда стоит уточнить!
API (Application programming interface) — это контракт, который предоставляет программа. «Ко мне можно обращаться так и так, я обязуюсь делать то и это».
Контракт включает в себя:
- саму операцию, которую мы можем выполнить,
- данные, которые поступают на вход,
- данные, которые оказываются на выходе (контент данных или сообщение об ошибке). ».
Что такое API? Простое объяснение для начинающих | Статья
Этот краткий термин на слуху у всех, кто хоть как-то сталкивался с разработкой. Но далеко не все понимают, что именно он обозначает и зачем нужен. Разработчик Пётр Газаров рассказал об API простыми словами в своём блоге.
Читать далее
Аббревиатура API расшифровывается как «Application Programming Interface» (интерфейс программирования приложений, программный интерфейс приложения). Большинство крупных компаний на определённом этапе разрабатывают API для клиентов или для внутреннего использования. Чтобы понять, как и каким образом API применяется в разработке и бизнесе, сначала нужно разобраться, как устроена «всемирная паутина».
WWW можно представить как огромную сеть связанных серверов, на которых и хранится каждая страница. Обычный ноутбук можно превратить в сервер, способный обслуживать целый сайт в сети, а локальные серверы разработчики используют для создания сайтов перед тем, как открыть их для широкого круга пользователей.
При введении в адресную строку браузера www.facebook.com на удалённый сервер Facebook отправляется соответствующий запрос. Как только браузер получает ответ, то интерпретирует код и отображает страницу.
Каждый раз, когда пользователь посещает какую-либо страницу в сети, он взаимодействует с API удалённого сервера. API — это составляющая часть сервера, которая получает запросы и отправляет ответы.
Многие компании предлагают API как готовый продукт. Например, Weather Underground продаёт доступ к своему API для получения метеорологических данных.
Сценарий использования: на сайте небольшой компании есть форма для записи клиентов на приём. Компания хочет встроить в него Google Календарь, чтобы дать клиентам возможность автоматически создавать событие и вносить детали о предстоящей встрече.
Применение API: цель — сервер сайта должен напрямую обращаться к серверу Google с запросом на создание события с указанными деталями, получать ответ Google, обрабатывать его, и передавать соответствующую информацию в браузер, например, сообщение с запросом на подтверждение пользователю.
В качестве альтернативы браузер может сделать запрос к API сервера Google, минуя сервер компании.
Технически, разница в формате запроса и ответа. Чтобы сгенерировать полную веб-страницу, браузер ожидает ответ на языке разметки HTML, в то время как API Google Календаря вернёт просто данные в формате вроде JSON.
Если запрос к API делает сервер веб-сайта компании, то он и является клиентом (так же, как клиентом выступает браузер, когда пользователь открывает веб-сайт).
Пользователь благодаря API получает возможность совершить действие, не покидая сайт компании.
Большинство современных сайтов используют по крайней мере несколько сторонних API. Многие задачи уже имеют готовые решения, предлагаемые сторонними разработчиками, будь то библиотека или услуга. Зачастую проще и надёжнее прибегнуть именно к уже готовому решению.
Многие разработчики разносят приложение на несколько серверов, которые взаимодействуют между собой при помощи API. Серверы, которые выполняют вспомогательную функцию по отношению к главному серверу приложения, называются микросервисами.
Таким образом, когда компания предлагает своим пользователям API, это просто означает, что она создала ряд специальных URL, которые в качестве ответа возвращают только данные.
Такие запросы часто можно отправлять через браузер. Так как передача данных по протоколу HTTP происходит в текстовом виде, браузер всегда сможет отобразить ответ. Например, через браузер можно напрямую обратиться к API GitHub (https://api.github.com/users/petrgazarov), причём без маркера доступа, и получить вот такой ответ в формате JSON:
Браузер отлично отображает JSON-ответ, который вполне можно вставлять в код. Из такого текста достаточно просто извлечь данные, чтобы использовать их по своему усмотрению.
Слово «application» (прикладной, приложение) может применяться в разных значениях. В контексте API оно подразумевает:
- фрагмент программного обеспечения с определённой функцией,
- сервер целиком, приложение целиком или же просто отдельную часть приложения.
Любой фрагмент ПО, который можно чётко выделить из окружения, может заменять букву «А» в англоязычной аббревиатуре, и тоже может иметь некоторого рода API. Например, при внедрении в код разработчиком сторонней библиотеки, она становится частью всего приложения. Будучи самостоятельным фрагментом ПО, библиотека будет иметь некий API, который позволит ей взаимодействовать с остальным кодом приложения.
В объектно-ориентированном проектировании код представлен в виде совокупности объектов. В приложении таких объектов, взаимодействующих между собой, могут быть сотни. У каждого из них есть свой API — набор публичных свойств и методов для взаимодействия с другими объектами в приложении. Объекты могут также иметь частную, внутреннюю логику, которая скрыта от окружения и не является API.
что это такое и зачем нужны технологии SEO API для сайта, интерфейс и функция
API (application programming interface) — это набор готовых классов, функций, процедур, структур и констант. Вся эта информация предоставляется самим приложением (или операционной системой). При этом пользователю не обязательно понимать, что это API технология обеспечивает взаимодействие модулей. Цель предоставленной информации – использование этих данных при взаимодействии с внешними программами.
API различных продуктов используются программистами для создания приложений, которые будут взаимодействовать друг с другом.
В общем случае данный механизм применяется с целью объединения работы различных приложений в единую систему. Это достаточно удобно для исполнителей. Ведь в таком случае к другому приложению можно обращаться как к «черному ящику». При этом не имеет значения его внутренний механизм – программист может вообще не знать, что такое API.
Функции API
В процессе работы элементы механизма API организуют многоуровневую иерархию. При этом подчиненные компоненты также получают подобную структуру. Внутри стандартной сетевой модели OSI выделяют как минимум 7 внутренних уровней. Они классифицируются от физического уровня трансляции бит до приложений, таких как протоколы HTTP и IMAP. Таким образом API верхнего использует функциональность нижнего.
Одним из важных компонентов организации информации при описании API являются библиотеки функций и классов. В их состав входят описания сигнатур и семантики. Здесь API функции – это просто часть механизма интерфейса.
В этом случае сигнатура выступает как часть общего объявления функции. С ее помощью выполняется идентификация элемента. В различных языках написания программ она представлена разным способом. Тем самым определяется возможностями ее перезагрузки.
При описании языков специалисты стараются различать отдельно сигнатуры вызова и реализации каждой конкретной функции. В этом случае сигнатура вызова определяется с учетом области видимости, имени, последовательности фактических типов аргументов.
Эти компоненты дают возможность компилятору опознать функцию в языке C++. В тех случаях, когда она является методом определенного класса, ее сигнатура включается в имя этого класса.
Семантика же функции представляет программисту описание ее работы, выполняемых действий. Обычно в нее попадают результат вычисления и те параметры, от которых он зависит. В этом случае результат выполнения может включать зависимости не только от аргументов, но и от фактического состояния. И не имеет значения, что это API соединение определяет возможность получения информации.
Типы API
Классификация программных интерфейсов тесно связана с назначением и возможностями приложений, которые через них управляются. Фактически при работе сложной системы часто существуют альтернативные API, позволяющие решить такие же задачи другими средствами.
В отдельные группы выделяют интерфейсы управления графическими компонентами программных модулей (API графических интерфейсов wxWidgets, Qt, GTK и т. п.), операционными системами (Amiga ROM Kernel, Cocoa, Linux Kernel APIruen, OS/2 API, POSIX, Windows API), звуковые (DirectMusic/DirectSound, OpenAL), оконные интерфейсы и так далее. Здесь их разделение определяется уровнем приложения в иерархии и функциональностью. Пользователи компьютерных игр обычно не подозревают, что это графический API обеспечивает им такую быструю отрисовку картинки и поразительную яркость изображений.
К глобальным API часто относят интерфейсы отдельных языков программирования. Но с их помощью можно управлять решением вполне конкретных и локальных задач. Все зависит от реализации определенного алгоритма.
Проблемы, возникающие при работе интерфейсов многоуровневых систем, разделяются на две большие группы:
- Трудности портирования кода программы при переходе от одной API к другой. Они часто появляются при переносе модулей в другие операционные системы.
- Снижения объема функциональности интерфейса при переходе к управлению с более низкого уровня на высокий. В этом случае облегчается выполнение строго определенного класса задач. При этом возможности доступа к элементам управления другими регуляторами теряются. Ведь более низкий уровень позволяет легко управлять базовыми компонентами программы.
API вебмастеров / поисковых систем
Для вебмастеров и программистов особенно важны Web API. Такие системы управления включают в себя комплект HTTP-запросов. В результате получения таких запросов модуль генерирует строго определенную структуру HTTP-ответов. Для транспортировки информации между ними принято использовать форматы XML или JSON.
Фактически в этом случае название Web API будет синонимом обозначения веб-службы. Иными словами, это определенные программные системы со своими интерфейсами. Для получения конкретного доступа к ним используется идентификация в сети по веб-адресу. Например, при передаче данный на сервер применяется серверный API.
В случае построения программных систем на основе сервис-ориентированной архитектуры именно веб-служба является уровнем формирования модулей.
Для обычных пользователей такие службы являются синонимами абсолютно обычных решений в Интернете. Это может быть почта, поисковая система, сервис хранения файлов, социальных закладок и так далее. В случае необходимости тестирования веб-службы на больших объемах разнообразных данных соответствующий API testing предоставляет механизм для такой объемной работы.
При правильной организации любой клиент может использовать такие службы вне зависимости от типа компьютера, вида браузера и места своего нахождения в сети.
Примером использования в рекламе является API Яндекс.Директа. На его базе разработчики создают модули для управления рекламными кампаниями. При обращении к системам продвижения сайтов для повышения параметров SEO API предоставляет механизмы информационного взаимодействия.
Обычно порядок работы интерфейса стараются передать в его названии. Мы можем не найти в поиске, что такое syngestureapisampleapp application. Но из названия понятно, что это пример работы интерфейса для единичного пользователя.
При этом нужно учитывать изменения в интерфейсах, произошедшие после массового внедрения стандартов Web 2.0. В результате был выполнен переход протокола обмена структурированными данными в распределенной вычислительной среде SOAP (от англ. Simple Object Access Protocol — простой протокол доступа к объектам) к архитектурному стилю взаимодействия компонентов распределенного приложения в сети REST (сокр. от англ. Representational State Transfer — «передача состояния представления»). Для многих веб-служб, в число которых входят поисковые системы и интернет-магазины, данный переход привел к упрощению архитектуры и ускорению выполнения задач. Правильная организация информационных потоков приводит к тому, что API сайта предоставляет широкие возможности автоматизации последнего.
При этом отдельные компоненты REST функционируют примерно таким же образом, как взаимодействуют между собой серверы и клиенты в Интернете. Хотя работа систем на архитектуре REST до сих пор не имеет единого стандарта, большинство RESTful-реализаций используют конкретные стандарты, такие как HTTP, URL, JSON и XML. Здесь особенно важно, что открытый API – это возможность дополнения и расширения системы взаимодействия.
Что такое API / Sandbox / Habr
Приветствую!В этой статье мы с вами рассмотрим, что такое API, где, как и для чего оно применяется. Так же мы рассмотрим, как API можно применить в своих web разработках и чем это может упростить жизнь web программисту.
Итак, начнём с определения. API (Application Programming Interface) — это интерфейс программирования, интерфейс создания приложений. Если говорить более понятным языком, то API — это готовый код для упрощения жизни программисту. API создавался для того, чтобы программист реально мог облегчить задачу написания того или иного приложения благодаря использованию готового кода (например, функций). Всем известный jQuery, написанный на JavaScript является тоже своего рода API. Если рассматривать конкретно данный пример, то jQuery позволяет намного облегчить написание кода. То что обычными средствами JavaScript можно было сделать за 30 строк, через jQuery пишется через 5-6. Если рассматривать API в общем, то можно найти очень много сервисов, представляющих решения для разработки. Самый известный на сегодняшний день — это сервис code.google.com, предоставляющий около полусотни разнообразных API! Это и интерфейс для создания Android-приложений, и различные API для работы с AJAX, и различные API приложений, которые можно легко подстроить под свой лад.
Ведь есть ли смысл писать код своими руками? Зачем трудиться над тем, что уже создано? Разве есть смысл отказываться от бесплатных решений (а фактически, и от бесплатной помощи) в web разработке? Если вы ответили на все эти вопросы «НЕТ», то считайте, что вы поняли суть API.
Но ещё хочу оговориться. Начинающим разработчикам НЕ следует пользоваться полуготовыми решениями, так как в будущем они не справятся с реальной задачей. Поэтому, если вы начинающий web программист, то не используйте полуфабрикаты! Учитесь думать своей головой, строить различные алгоритмы, чтобы понять суть программирования. Так же говорю, уже обращаясь ко всем, что API — это не готовые решения, это среда, интерфейс для создания своих проектов. Вы же не едите замороженный котлеты из магазина? Вы сначала их пожарите, не так ли? Эта аналогия очень ясно отображает суть API.
В общем, я рассказал, что такое API, где и как оно используется, самое главное, для чего. Желаю приятного изучения web программирования и постижения всё больших его глубин!
Урок 1. Что такое API Директа
В этом уроке вы узнаете:
- Что такое API
- Для чего нужен API Директа
- С чего начать
- Объекты в веб-интерфейсе и в API
- Задание
- Как выглядит запрос к API
- Полезные ссылки
- Вопросы
В этом уроке мы расскажем, зачем Директу API, и познакомим вас с основными принципами работы.
Яндекс.Директ — это единая платформа для размещения контекстной и медийной рекламы. Директ покажет объявления целевой аудитории вашего бизнеса, заинтересованной в ваших товарах или услугах.
Чтобы работать с Директом, достаточно открыть веб-интерфейс, создать аккаунт и разместить объявления. В дальнейшем управлять рекламой в Директе можно не только в веб-интерфейсе, но и через API.
Совет. Если вы еще не работали с Директом, рекомендуем предварительно пройти обучающий курс Как разместить рекламу в Директе и ознакомиться с Помощью. Это позволит вам понять общие принципы создания и ведения рекламных кампаний и лучше освоить наш курс по API.API (англ. Application Programming Interface) — это интерфейс программирования приложений. API сервиса предоставляет набор готовых процедур, функций и структур, с помощью которых разработчики могут создавать свои программы, приложения, скрипты (далее — приложения) для работы с сервисом.
Другими словами, API — это конструктор, в котором есть набор деталей (функций, методов) и правил их использования. Из этих деталей вы можете построить собственное приложение.
При работе через API приложение отправляет запрос к сервису и получает ответ, содержащий запрошенные данные. API предоставляет возможность автоматизировать процессы, аналогичные вашей работе в веб-интерфейсе.
Используя API Директа, вы можете управлять теми же рекламными материалами, что и в веб-интерфейсе. API позволяет автоматизировать рутинные операции, ускорить их выполнение и тем самым повысить эффективность управления аккаунтом. API полезен для тех, кто работает с большими объемами данных, не хочет зависеть от интерфейса в браузере и предпочитает тонкую настройку рекламы.
Вы можете создать приложение для решения своих задач — как независимый разработчик, рекламодатель или рекламное агентство. Например, вы можете написать скрипт, который будет через API автоматически обновлять ставки по вашему собственному алгоритму. Вы можете интегрировать с Директом информационную систему вашей компании — загрузить в Директ большое количество объявлений из вашей базы данных, автоматически обновлять тексты объявлений при изменении цены товара, останавливать и возобновлять показы в зависимости от наличия товара на складе. Вы можете выгружать ежедневную статистику по рекламным кампаниям в аналитическую систему или систему финансового учета.
Подключение к API Директа и его использование является бесплатным.
Для прохождения курса вам потребуется аккаунт в Директе. Создайте, если у вас его еще нет:
Войдите на Яндекс под своим логином, который будете использовать как разработчик приложений. Если у вас нет логина на Яндексе — зарегистрируйтесь.
- В веб-интерфейсе Директа (https://direct.yandex.ru) нажмите кнопку Запустить рекламу.
Укажите актуальный адрес электронной почты, выберите страну и валюту. Нажмите кнопку Начать пользоваться сервисом.
Создайте первую рекламную кампанию — рекомендуем выбрать тип кампании «Текстово-графические объявления». Укажите параметры кампании и создайте первое объявление. На этом этапе вам достаточно создать одно объявление-черновик с одной ключевой фразой. Отправлять объявления на модерацию и зачислять денежные средства на кампанию не требуется.
Теперь у вас есть аккаунт в Директе. Давайте посмотрим, как выглядят ваши рекламные материалы в веб-интерфейсе и в API.
Рекламная кампания в Директе состоит из групп объявлений, каждая из которых содержит объявления и ключевые фразы. Объявления могут включать в себя дополнительные элементы: изображения, быстрые ссылки и другие.
Взаимосвязь объектов в API представлена на схеме:
Campaign — рекламная кампания, AdGroup — группа объявлений, Ad — объявление.
Дополнения к объявлению: AdImage — изображение, VCard — визитка, SitelinksSet — набор быстрых ссылок, AdExtension — уточнение.
Условия показа объявлений группы: Keyword — ключевая фраза и другие, в зависимости от типа кампании. Для условия показа можно установить ставку — KeywordBid.
Изучите настройки своей рекламной кампании в Директе. Создайте новые объявления с разными параметрами. Если вы не хотите запускать реальную кампанию — не отправляйте группы объявлений на модерацию, тогда объявления останутся в статусе «Черновик».
Выполнить задание
Рекламные материалы, которые вы видите в веб-интерфейсе, можно получить с помощью запросов к API. Внести изменения тоже можно с помощью запросов к API — и сразу увидеть результат в веб-интерфейсе. API работает с каждым объектом в отдельности: различные методы API позволяют создать объявление, обновить визитку, получить статистику и многое другое.
Вот как выглядит запрос к API, который позволяет получить список рекламных кампаний пользователя. Запрос отправляется по сетевому протоколу HTTPS методом POST.
В следующих уроках мы проведем вас по всем начальным этапам работы с API:
Расскажем, как получить доступ к API — зарегистрировать приложение на сервисе Яндекс.OAuth, подать заявку на доступ, получить OAuth-токен.
Поможем настроить тестовую среду для отладки приложения — Песочницу.
Научим формировать запросы к API: покажем, какие сервисы и методы предоставляет API, подробно рассмотрим структуру запроса.
В завершение дадим несколько советов, как перейти от тренировки в Песочнице к работе с реальными рекламными материалами реальных пользователей.
Настоятельно рекомендуем проходить уроки последовательно. В каждом уроке вам потребуются сведения, изложенные в предыдущих уроках, а также результаты действий, выполненных в предыдущих уроках.
Желаем успеха!
- Для работы с API необходим аккаунт в Директе. Что нужно сделать для создания аккаунта в Директе?
- Что можно делать с помощью API Директа?
- Если вы внесете изменения в рекламную кампанию через API Директа, то где они будут отображены?
Что такое программный интерфейс приложений (API)
Пока вы это читаете, API-интерфейсы (программные интерфейсы приложений) связывают весь цифровой мир в единое целое. Благодаря им на работе мы получаем возможность выполнять проекты быстрее и эффективнее, используя аналитику реального времени и высокоинтегрированные инструменты. В сфере здравоохранения API объединяют клинические данные из различных источников и результаты исследований, что приводит к значительному ускорению разработки новых методов лечения и позволяет медучреждениям повышать качество медицинской помощи.
Возможно, вы удивитесь — как такие маленькие, но мощные API оказываются настолько полезными? Давайте ознакомимся с основными сведениями об API-интерфейсах и попытаемся понять, как же они связывают различные приложения.
Что такое программный интерфейс приложений (API)?
API — это интерфейс, позволяющий двум независимым компонентам программного обеспечения обмениваться информацией. API играет роль посредника между внутренними и внешними программными функциями, обеспечивая настолько эффективный обмен информацией, что конечные пользователи обычно его просто не замечают.
Какую функцию выполняет API?
Простой API. Источник: ExperianГоворя по-простому, API действует как виртуальный посредник и передает информацию из одного интерфейса, например мобильного приложения, в другой. API связывает различные части программной платформы, чтобы передаваемая информация дошла до места назначения.
Эти связующие узлы не только выполняют роль внутренних каналов связи, но и позволяют внешним инструментам получать доступ к этой же информации. Таким образом API-интерфейсы могут относиться к одной из двух категорий:
- Внутренние/частные API
- Внешние/открытые API
Частные API
Частные API доступны только разработчикам и пользователям из числа сотрудников организации. Такие API обычно связывают внутренние процессы для уменьшения разрозненности рабочих данных и оптимизации совместной работы.
Открытые API
Открытые API, в свою очередь, позволяют внешним разработчикам получать доступ к информации и интегрировать информацию, которая передается из одного программного инструмента в другой. Открытые или частные API экономят время разработчиков, позволяя им объединять платформы с имеющимися инструментами и устраняя необходимость в создании нового функционала с нуля.
Примеры API
На практике API могут использоваться для связи практически любых процессов. Вот несколько распространенных примеров использования API:
- Обмен информацией о рейсах между авиакомпаниями и туристическими сайтами
- Использование Google Maps в приложении для совместных поездок (райдшеринга)
- Создание виртуальных собеседников в службе обмена сообщениями
- Встраивание видеоклипов с YouTube на веб-странице
- Автоматизация рабочих процессов в программных инструментах для B2B-сектора
Поиск, сбор и обмен данными
Такие туристические сайты, как Kayak, используют API для сбора данных реального времени от авиакомпаний, отелей и экскурсионных бюро. Без оптимизированного доступа к подобной информации сотрудникам Kayak пришлось бы собирать эти данные вручную, или они просто не смогли бы предлагать такие выгодные туры.
В качестве других примеров использования API для обмена информацией в режиме реального времени можно назвать издание The New York Times, позволяющее анализировать свою базу данных, в которой хранятся тысячи статей, и сервис Spotify, который позволяет искать музыку различных стилей и направлений. Даже у агентства НАСА есть открытые API, открывающие доступ всем желающим к спутниковыми изображениями и информации о созвездиях.
Избавление от лишней работы
Сейчас в мире столько программных продуктов и сервисов, что разработчики могут запросто заниматься созданием чего-то, что на самом деле уже существует. API дают разработчикам готовые инструменты и функции, избавляя их от необходимости создавать эти инструменты с нуля.
Например, API-интерфейс YouTube позволяет встраивать видеопроигрыватели на сайт, формировать отчеты и получать доступ к полезным ресурсам.
Укрепление новаторства и сотрудничества
В некоторых случаях API оказываются на переднем крае инноваций в науке и технике. Возьмем, к примеру, изучение генома человека: без международного сотрудничества и быстрого доступа к данным исследования проводились бы независимо друг от друга, и результаты достигались бы гораздо медленнее. API-интерфейсы Google Genomics позволяют ученым легко анализировать результаты множества генетических исследований, помогают открывать новые методы лечения и изучать развитие генетических заболеваний.
[postbanner]
REST или SOAP
Когда вокруг так много разных приложений, вы можете задаться вопросом: а каким стандартам подчиняются API? Хотя в мире до сих пор не принят единый универсальный стандарт, есть несколько ведущих претендентов.
Эти стандарты, которые называются протоколы веб-сервисов, представляют собой наборы методов, определяющих способ передачи данных и доступа к API. Самые популярные протоколы, REST и SOAP, сейчас лидируют в этой гонке и используются подавляющим большинством открытых API-интерфейсов.
- SOAP (Simple Object Access Protocol) до недавнего времени считался безусловным фаворитом у разработчиков API. Но сейчас 70% открытых API соответствуют протоколу REST. SOAP по-прежнему используется во многих крупных технических компаниях и обеспечивает поддержку устаревших систем, которые могут быть совместимы только с ним.
- REST (Representational State Transfer) — это новый протокол веб-сервисов, позволяющий работать с большим количеством форматов данных. Кроме того, REST предпочтительнее для разработчиков, так как предлагает меньшее время загрузки и более высокую эффективность.
Ознакомьтесь с материалами по API
Вы готовы полностью раскрыть потенциал API в своей компании? Ознакомьтесь с этими материалами начального уровня. И заодно узнайте, как API Wrike могут преобразовать ваши методы работы.
- Основные сведения об использовании API (TechnologyAdvice)
- Восемнадцать полезных API для вашего следующего проекта (Medium)
- Лучшая коллекция из 150 API для создания отличных программных продуктов (Medium)
Что такое API и для чего он может понадобиться?
Вероятно, вы видели термин «API». Операционная система, веб-браузер и обновления приложений часто объявляют о новых API для разработчиков. Но что такое API?
Интерфейс прикладного программирования
Термин API является аббревиатурой, и он означает «Интерфейс прикладного программирования».
API — это как меню в ресторане. В меню представлен список блюд, которые Вы можете заказать, а также описание каждого блюда. Когда Вы укажете, какие пункты меню Вы хотите, кухня ресторана выполняет эту работу и предоставляет Вам готовые блюда. Вы точно не знаете, как ресторан готовит эту еду, и Вам это не нужно.
Аналогично, API предоставляет множество операций, которые могут использовать разработчики, а также описание того, что они делают. Разработчику необязательно знать, как, например, создается операционная система и отображается диалоговое окно «Сохранить как». Им просто нужно знать, что он доступен для использования в приложении.
Это не идеальная метафора, поскольку разработчикам, возможно, придется предоставить свои собственные данные API для получения результатов, поэтому, возможно, это больше похоже на причудливый ресторан, где Вы можете предоставить некоторые из Ваших собственных ингредиентов, с которыми будет работать кухня.
API-интерфейсы позволяют разработчикам сэкономить время, воспользовавшись внедрением платформы, чтобы выполнить важную работу. Это помогает уменьшить количество разрабатываемого кода, а также помогает создавать согласованность между приложениями для одной и той же платформы. API-интерфейсы могут контролировать доступ к аппаратным и программным ресурсам.
API упрощают жизнь для разработчиков
Предположим, Вы хотите разработать приложение для iPhone. Операционная система Apple iOS предоставляет большое количество API-интерфейсов, как и любая другая операционная система, чтобы сделать это проще для Вас.
Например, если Вы хотите встроить веб-браузер для отображения одной или нескольких веб-страниц, Вам не нужно программировать собственный веб-браузер с нуля только для Вашего приложения. Вы
можете использовать WKWebView API для встраивания веб-браузера WebKit (Safari) в приложение.
Если Вы хотите снимать фотографии или видео с камеры iPhone, Вам не нужно писать свой собственный интерфейс камеры. Вы можете использовать API-интерфейс камеры для встраивания камеры iPhone в свое приложение. Если бы API не существовало, разработчикам приложений пришлось бы создавать собственное программное обеспечение камеры и интерпретировать входы аппаратного обеспечения камеры. Но разработчики операционной системы Apple сделали всю эту тяжелую работу, поэтому разработчики могут просто использовать API-интерфейс камеры для встраивания камеры, а затем продолжить написание своего приложения. И когда Apple улучшит API-интерфейс камеры, все приложения, которые используют его, автоматически воспользуются этим улучшением.
Это относится ко всем платформам. Например, Вы хотите создать диалоговое окно в Windows? Для этого есть API. Хотите поддерживать аутентификацию отпечатков пальцев на Android? Для этого есть API, так что Вам не нужно тестировать каждый датчик отпечатков пальцев любого производителя Android. Разработчикам не нужно повторно изобретать колесо снова и снова.
API-интерфейсы управляют доступом к ресурсам
API-интерфейсы также используются для управления доступом к аппаратным устройствам и функциям программного обеспечения, на использование которых у приложения может не быть разрешения. Вот почему API часто играют большую роль в безопасности.
Например, если Вы когда-либо посещали веб-сайт и видели в своем браузере сообщение о том, что веб-сайт запрашивает Ваше точное местоположение, этот веб-сайт пытается использовать API геолокации в Вашем веб-браузере. Веб-браузеры предоставляют API-интерфейсы, чтобы веб-разработчикам было легко получить доступ к Вашему местоположению — они могут просто спросить «где вы?», и браузер сделает тяжелую работу по доступу к GPS или соседним сетям Wi-Fi, чтобы найти Ваше физическое местоположение.
Однако, браузеры также предоставляют эту информацию через API, потому что можно контролировать доступ к ней. Когда веб-сайт хочет получить доступ к Вашему точному местоположению, единственный способ получить его — через API местоположения. И, когда веб-сайт пытается использовать его, Вы — пользователь — можете разрешить или отклонить этот запрос. Доступ к аппаратным ресурсам, таким как датчик GPS, возможен только через API, поэтому браузер может контролировать доступ к аппаратным средствам и ограничивать возможности приложений.
Этот же принцип используется для современных мобильных операционных систем, таких как iOS и Android, где мобильные приложения имеют разрешения, которые могут быть реализованы путем контроля доступа к API. Например, если разработчик пытается получить доступ к камере через API-интерфейс камеры, Вы можете отклонить запрос на разрешение, и приложение не будет иметь доступа к камере Вашего устройства.
Файловые системы, которые используют разрешения, как и в Windows, Mac и Linux, имеют те права, которые применяются API файловой системы. Типичное приложение не имеет прямого доступа к необработанному физическому жесткому диску. Вместо этого приложение должно получить доступ к файлам через API.
API используются для связи между службами
API также используются по другим причинам. Например, если Вы когда-либо видели объект Google Карты, встроенный на веб-сайт, этот веб-сайт использует API Карт Google для встраивания этой карты. Google предоставляет API-интерфейсы, подобные этим, для веб-разработчиков, которые затем могут использовать API-интерфейсы, чтобы собирать сложные объекты прямо на своем веб-сайте. Если таких API не существует, разработчикам, возможно, придется создавать свои собственные карты и предоставлять свои собственные данные карты, чтобы разместить небольшую интерактивную карту на веб-сайте.
И поскольку это API, Google может контролировать доступ к Картам Google на сторонних веб-сайтах, гарантируя, что они будут использовать его согласованным образом, а не пытаться беспорядочно внедрять фрейм, который показывает веб-сайт Google Maps, например.
Это относится ко многим различным онлайн-сервисам. Существуют API для запроса перевода текста из Google Translate или отображения комментариев Facebook или твитов из Twitter на веб-сайте.
Стандарт OAuth также определяет ряд API, которые позволяют Вам входить на сайт через другой сервис, например, использовать Ваши учетные записи Facebook, Google или Twitter для входа на новый веб-сайт без создания новой учетной записи пользователя только для этого сайта. API — это стандартные контракты, которые определяют, как разработчики взаимодействуют с сервисом, и вид продукции, которую разработчики должны ожидать получить.
Если Вы прочли эту статью, то у Вас будет лучшее представление о том, что такое API. В конечном итоге Вам не нужно знать, что такое API, если Вы не разработчик. Но, если Вы видите, что программная платформа или служба добавили новые API для различных аппаратных средств или услуг, разработчикам должно быть проще использовать такие функции.