Что такое программный интерфейс: 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 / 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 кита:

  1. Инкапсуляция
  2. Наследование
  3. Полиморфизм

Инкапсуляция — это когда мы скрываем реализацию. Для пользователя все легко и понятно. Нажал на кнопочку — получил отчет. А как это работает изнутри — ему все равно. Какая база данных скрыта под капотом? Oracle? MySQL? На каком языке программирования написана программа? Как именно организован код? Не суть. Программа предоставляет интерфейс, им он и пользуется.

Не всегда программа предоставляет именно графический интерфейс. Это может быть SOAP, REST интерфейс, или другое API. Чтобы использовать этот интерфейс, вы должны понимать:

  • что подать на вход;
  • что получается на выходе;
  • какие исключения нужно обработать.

Пользователи работают с GUI — graphical user interface. Программы работают с API — Application programming interface. Им не нужна графика, только контракт.
Вызвать апи можно как напрямую, так и косвенно.

Напрямую:

  1. Система вызывает функции внутри себя
  2. Система вызывает метод другой системы
  3. Человек вызывает метод
  4. Автотесты дергают методы

Косвенно:

  1. Пользователь работает с GUI

Вызов API напрямую

1. Система вызывает функции внутри себя

Разные части программы как-то общаются между собой. Они делают это на программном уровне, то есть на уровне API!

Это самый «простой» в использовании способ, потому что автор API, которое вызывается — разработчик. И он же его потребитель! А значит, проблемы с неактуальной документацией нет =)


Шучу, проблемы с документацией есть всегда. Просто в этом случае в качестве документации будут комментарии в коде. А они, увы, тоже бывают неактуальны. Или разработчики разные, или один, но уже забыл, как делал исходное api и как оно должно работать…

2. Система вызывает метод другой системы

А вот это типичный кейс, которые тестируют тестировщики в интеграторах. Или тестировщики, которые проверяют интеграцию своей системы с чужой.

Одна система дергает через api какой-то метод другой системы. Она может попытаться получить данные из другой системы. Или наоборот, отправить данные в эту систему.

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

Я подключаю подсказки по API. И теперь, когда пользователь начинает вводить адрес на моем сайте, он видит подсказки из Дадаты. Как это получается:

  • Он вводит букву на моем сайте
  • Мой сайт отправляет запрос в подсказки Дадаты по API
  • Дадата возвращает ответ
  • Мой сайт его обрабатывает и отображает результат пользователю


Вон сколько шагов получилось! И так на каждый введенный символ. Пользователь не видит этого взаимодействия, но оно есть.

И, конечно, не забываем про кейс, когда мы разрабатываем именно API-метод. Который только через SOAP и можно вызвать, в интерфейсе его нигде нет. Что Заказчик заказал, то мы и сделали ¯\_(ツ)_/¯

Пример можно посмотреть в Users. Метод MagicSearch создан на основе реальных событий. Хотя надо признать, в оригинале логика еще замудренее была, я то под свой сайт подстраивала.

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

Функционал супер-поиска доступен только по API, пользователь в интерфейсе его никак не пощупает.

В этом случае у вас обычно есть ТЗ, согласно которому работает API-метод. Ваша задача — проверить его. Типичная задача тестировщика, просто добавьте к стандартным тестам на тест-дизайн особенности тестирования API, и дело в шляпе!

(что именно надо тестировать в API — я расскажу отдельной статьей чуть позднее)

3. Человек вызывает метод

Причины разные:

  1. Для ускорения работы
  2. Для локализации бага (проблема где? На сервере или клиенте?)
  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 (программный интерфейс приложения, интерфейс прикладного программирования) (англ. application programming interface, API [эй-пи-ай][1]) — описание способов (набор классов, процедур, функций, структур или констант), которыми одна компьютерная программа может взаимодействовать с другой программой. Обычно входит в описание какого-либо интернет-протокола (например, RFC[1]), программного каркаса (фреймворка)[2] или стандарта вызовов функций операционной системы[3]. Часто реализуется отдельной программной библиотекой или сервисом операционной системы. Используется программистами при написании всевозможных приложений.

API как средство интеграции приложений[ | ]

API определяет функциональность, которую предоставляет программа (модуль, библиотека), при этом API позволяет абстрагироваться от того, как именно эта функциональность реализована.

Если программу (модуль, библиотеку) рассматривать как чёрный ящик, то API — это множество «ручек», которые доступны пользователю данного ящика и которые он может вертеть и дёргать.

Программные компоненты взаимодействуют друг с другом посредством API. При этом обычно компоненты образуют иерархию — высокоуровневые компоненты используют API низкоуровневых компонентов, а те, в свою очередь, используют API ещё более низкоуровневых компонентов.

По такому принципу построены протоколы передачи данных по Интернету. Стандартный стек протоколов (сетевая модель OSI) содержит 7 уровней (от физического уровня передачи бит до уровня протоколов приложений, подобных протоколам HTTP и IMAP). Каждый уровень пользуется функциональностью предыдущего («нижележащего») уровня передачи данных и, в свою очередь, предоставляет нужную функциональность следующему («вышележащему») уровню.

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

API библиотеки функций и классов включает в себя описание сигнатур и семантики функций.

Сигнатура функции[ | ]

Сигнатура функции — часть общего объявления функции, позволяющая средствам трансляции идентифицировать функцию среди других. В различных языках программирования существуют разные представления о сигнатуре функции, что также тесно связано с возможностями перегрузки функций в этих языках.

Иногда различают сигнатуру вызова и сигнатуру реализации функции. Сигнатура вызова обычно составляется по синтаксической конструкции вызова функции с учётом сигнатуры области видимости данной функции, имени функции, последовательности фактических типов аргументов в вызове и типе результата. В сигнатуре реализации обычно участвуют некоторые элементы из синтаксической конструкции объявления функции: спецификатор области видимости функции, её имя и последовательность формальных типов аргументов.

Например, в языке программирования C++ простая функция однозначно опознаётся компилятором по её имени и последовательности типов её аргументов, что составляет сигнатуру функции в этом языке. Если функция является методом некоторого класса, то в сигнатуре будет участвовать и имя класса.

В языке программирования Java сигнатуру метода составляет его имя и последовательность типов параметров; т

Программный интерфейс приложения Википедия


API (программный интерфейс приложения, интерфейс прикладного программирования) (англ. application programming interface, API [эй-пи-ай][1]) — описание способов (набор классов, процедур, функций, структур или констант), которыми одна компьютерная программа может взаимодействовать с другой программой. Обычно входит в описание какого-либо интернет-протокола (например, RFC[1]), программного каркаса (фреймворка)[2] или стандарта вызовов функций операционной системы[3]. Часто реализуется отдельной программной библиотекой или сервисом операционной системы. Используется программистами при написании всевозможных приложений.

API как средство интеграции приложений[ | ]

API определяет функциональность, которую предоставляет программа (модуль, библиотека), при этом API позволяет абстрагироваться от того, как именно эта функциональность реализована.

Если программу (модуль, библиотеку) рассматривать как чёрный ящик, то API — это множество «ручек», которые доступны пользователю данного ящика и которые он может вертеть и дёргать.

Программные компоненты взаимодействуют друг с другом посредством API. При этом обычно компоненты образуют иерархию — высокоуровневые компоненты используют API низкоуровневых компонентов, а те, в свою очередь, используют API ещё более низкоуровневых компонентов.

По такому принципу построены протоколы передачи данных по Интернету. Стандартный стек протоколов (сетевая модель OSI) содержит 7 уровней (от физического уровня передачи бит до уровня протоколов приложений, подобных протоколам HTTP и IMAP). Каждый уровень пользуется функциональностью предыдущего («нижележащего») уровня передачи данных и, в свою очередь, предоставляет нужную функциональность следующему («вышележащему») уровню.

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

API библиотеки функций и классов включает в себя описание сигнатур и семантики функций.

Сигнатура функции[ | ]

Сигнатура функции — часть общего объявления функции, позволяющая средствам трансляции идентифицировать функцию среди других. В различных языках программирования существуют разные представления о сигнатуре функции, что также тесно связано с возможностями перегрузки функций в этих языках.

Иногда различают сигнатуру вызова и сигнатуру реализации функции. Сигнатура вызова обычно составляется по синтаксической конструкции вызова функции с учётом сигнатуры области видимости данной функции, имени функции, последовательности фактических типов аргументов в вызове и типе результата. В сигнатуре реализации обычно участвуют некоторые элементы из синтаксической конструкции объявления функции: спецификатор области видимости функции, её имя и последовательность формальных типов аргументов.

Например, в языке программирования C++ простая функция однозначно опознаётся компилятором по её имени и последовательности типов её аргументов, что составляет сигнатуру функции в этом языке. Если функция является методом некоторого класса, то в сигнатуре будет участвовать и имя класса.

В языке программирования Java сигнатуру метода составляет его имя и последовательно

Прикладной программный интерфейс | Computerworld Россия


Определение: Прикладной программный интерфейс (application programming interface, API) — это описание способа, который позволяет какому-либо фрагменту ПО обращаться к другой программе за получением сервиса. Этим сервисом может быть предоставление доступа к данным или выполнение конкретной функции. Интерфейсы разработаны для большей части ПО уровня предприятия и играют критически важную роль в операционных системах, которые управляют большинством базовых функций компьютера

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

По существу, прикладной интерфейс программы определяет корректный способ, который разработчик может использовать для вызова сервисов, необходимых конкретной программе. Разработчики могут выполнять запросы, добавляя вызовы в код своих приложений. Синтаксис описывается в документации вызываемого приложения.

Предоставляя средства для запроса программных сервисов, API гарантирует доступ или возможность открытия приложения. По словам Джоша Уолкера, аналитика компании Forrester Research, «создание приложения без API напоминает строительство дома без дверей. Для любой вычислительной задачи прикладной программный интерфейс открывает окна и двери для обмена информацией».

Кроме того, прикладные программные интерфейсы обеспечивают взаимодействие приложений между собой. В состав корпоративных приложений компании SAP входит API, получивший название BAPI, который обеспечивает другим приложениям доступ к бизнес-данным. Когда в отрасли утверждается стандарт на данные, вслед за этим обычно появляется единый прикладной программный интерфейс, который обеспечивает доступ к приложениям, обрабатывающим эти данные.

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

По мнению Адама Браунштейна, аналитика компании Robert Frances Group, хотя API и обеспечивают быстрый и удобный способ доступа к приложению, они могут оказаться чересчур ограниченным средством для пользователей, которым требуются более широкие возможности, в частности для независимых производителей программного обеспечения. Свободно распространяемые программы позволяют получить текст любой команды и операции в приложении и тем самым обеспечивают большую гибкость. Но на то, чтобы разобраться в исходном тексте, может уйти слишком много времени, а кроме того, при таком подходе неминуемо возникают вопросы об интеллектуальной собственности автора.

Когда компания Novell в прошлом году сообщила о намерении предоставить широкой публике доступ к исходным текстам своего программного обеспечения Novell Directory Services (NDS), Крис Стоун, бывший в то время вице-президентом Novell, заявил, что большинство корпоративных разработчиков не хотят копаться в текстах свободно распространяемого обеспечения. На самом деле, по его словам, разработчики хотят получить дополнительные наборы API, с помощью которых они смогли бы работать быстрее. И до сих пор исходные тексты NDS так и не опубликованы.

Корпоративные разработчики должны решить, нужно ли включать прикладные интерфейсы в создаваемые ими приложения. Со временем вероятность того, что другому разработчику потребуется обратиться к сервисам этого приложения, только увеличивается. По словам Браунштейна, создание API избавит программистов, которые впоследствии будут работать с данным приложением, от необходимости искать нужный текст и разбираться в том, как устроен код.

Прикладные программные интерфейсы создавать несложно, но, как отметил Ларри Перлштейн, аналитик компании GartnerGroup, они могут оказаться трудными для изучения. Разработчики приложений и производители должны постоянно думать о том, будут ли их прикладные программные интерфейсы понятны последующим разработчикам. «API бесполезен, если на него нет документации», — подчеркнул Перлштейн, хотя некоторые производители оставляют свои API недокументированными.

API как оружие против конкурентов

Если компания хочет разочаровать разработчиков, она может хранить свои API в секрете или быстро их изменять. Многие критики корпорации Microsoft, в том числе государственные прокуроры и конкуренты, обвиняют компанию в том, что она не чурается подобной практики.

Эндрю Шульман описал несколько скрытых API операционной системы Windows в своей книге «Недокументированная Windows». Сейчас он работает консультантом в компании Caldera, которая предъявила иск корпорации Microsoft, обвиняя ее в нарушении антимонопольного законодательства. Теперь вместо сокрытия API, как пишет Шульман, «Windows имеет архитектуру типа ?кухонной раковины?, которая позволяет скрыть новые прикладные программные интерфейсы. Такое ?перемешивание? API — это попытка не допустить клонирования Windows».

Судья Томас Пенфилд Джексон привел аналогичные аргументы в своем выступлении 5 ноября в рамках слушаний по делу министерства юстиции против компании Microsoft. Он сказал, что «попытка клонировать API 32-разрядных Windows настолько дорогое и бесперспективное занятие, что появление конкурента для Windows становится практически невозможным».

Но Перлштейн отметил, что критикуя компанию за ее методы поддержки Windows API, конкуренты Microsoft дают волю своей зависти в ущерб справедливости. Представитель Microsoft Джим Куллинан утверждает, что Microsoft постоянно совершенствует Windows, а также обновляет и добавляет прикладные программные интерфейсы, поскольку снижение скорости модернизации могло бы привести к невыполнению сроков выпуска.


Прикладные программные интерфейсы и вы

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

Что такое программный интерфейс: API — Википедия – Что такое программный интерфейс приложений (API)

Представьте, что у вас есть три соседа. Закрытый Зиновий, Открытый Оскар и API Анн. Каждый из них — это аналог приложения. Как и любому из соседей, вам иногда нужно у них что-нибудь позаимствовать, например газонокосилку. Это эквивалент интеграции приложений.

Закрытый Зиновий просто не оказывает вам никаких услуг. Он косит свою собственную траву за огородившим его дом высоким забором. Вы не только не имеете возможности попросить его о чем-либо, но даже не можете войти к нему во двор, чтобы попытаться поговорить, поскольку в его заборе нет калитки. Такое приложение, как Закрытый Зиновий, не предоставляет ни исходных текстов, ни прикладного программного интерфейса.

Открытый Оскар — полная ему противоположность. Он настолько открыт, что разрешает вам свободно входить в свой двор всякий раз, когда вы захотите, и даже ремонтировать его косилку, поэтому он очень часто откликается на ваши просьбы. Конечно, как только вы измените конструкцию газонокосилки, описанную в руководстве, вам самому придется заниматься ее ремонтом и обслуживанием. Такие приложения, как Открытый Оскар, имеют открытый код, который позволяет вам менять его так, как вы того захотите.

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

Поделитесь материалом с коллегами и друзьями

Программный интерфейс - это... Что такое Программный интерфейс?




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

См. также:  Интерфейсы  

Финансовый словарь Финам.

.

  • Программный документ
  • Программный комплекс

Смотреть что такое "Программный интерфейс" в других словарях:

  • программный интерфейс — — [Л.Г.Суменко. Англо русский словарь по информационным технологиям. М.: ГП ЦНИИС, 2003.] Тематики информационные технологии в целом EN program interface …   Справочник технического переводчика

  • Программный интерфейс — У этого термина существуют и другие значения, см. Интерфейс. Программный интерфейс  функциональность, которую некоторый программный компонент предоставляет другим программным компонентам. Можно различать два вида такой функциональности: та,… …   Википедия

  • Программный интерфейс подключаемых модулей Netscape — (англ. Netscape Plugin Application Programming Interface, NPAPI кросс платформенная архитектура разработки плагинов, поддерживаемая многими браузерами. Интерфейс был разработан для семейства браузеров Netscape Navigator, начиная с Netscape… …   Википедия

  • программный интерфейс иерархической интерактивной графики — Стандартный прикладной интерфейс между программным обеспечением и графическим адаптером, в котором используется набор стандартных команд для рисования и управления двухмерными и трехмерными изображениями. [http://www.morepc.ru/dict/] Тематики… …   Справочник технического переводчика

  • программный интерфейс виртуального управления — — [Л.Г.Суменко. Англо русский словарь по информационным технологиям. М.: ГП ЦНИИС, 2003.] Тематики информационные технологии в целом EN virtual control program interfaceVCPI …   Справочник технического переводчика

  • программный интерфейс криптографического приложения — Набор криптографических программных средств, разработанных американской корпорацией "Майкрософт" и предоставляемых программистам для разработки собственных приложений, взаимодействующих с этими средствами.… …   Справочник технического переводчика

  • программный интерфейс приложения — Набор определенных интерфейсов, посредством которых приложение общается с операционной системой (ОС) или с другими программами. [ГОСТ Р 54456 2011] Тематики телевидение, радиовещание, видео EN Application Programming InterfaceAPI …   Справочник технического переводчика

  • программный интерфейс шифрования и передачи электронной подписи — — [Л.Г.Суменко. Англо русский словарь по информационным технологиям. М.: ГП ЦНИИС, 2003.] Тематики информационные технологии в целом EN cryptic application programming interface …   Справочник технического переводчика

  • прикладной программный интерфейс — 2.1.17 прикладной программный интерфейс; ППИ: Интерфейс между прикладным программным средством и прикладной платформой, через который обеспечиваются все услуги. Источник: Р 50.1.048 2004: Информационно телекоммуникационные игровые системы.… …   Словарь-справочник терминов нормативно-технической документации

  • прикладной программный интерфейс (ППИ) — 3.1.5 прикладной программный интерфейс (ППИ) (application program interface (API)): Интерфейс между прикладным программным средством и прикладной платформой, через который обеспечивается доступ ко всем необходимым службам (услугам). Источник …   Словарь-справочник терминов нормативно-технической документации

Программный интерфейс - Википедия


API (программный интерфейс приложения, интерфейс прикладного программирования) (англ. application programming interface, API [эй-пи-ай][1]) — описание способов (набор классов, процедур, функций, структур или констант), которыми одна компьютерная программа может взаимодействовать с другой программой. Обычно входит в описание какого-либо интернет-протокола (например, RFC[1]), программного каркаса (фреймворка)[2] или стандарта вызовов функций операционной системы[3]. Часто реализуется отдельной программной библиотекой или сервисом операционной системы. Используется программистами при написании всевозможных приложений.

API как средство интеграции приложений[ | ]

API определяет функциональность, которую предоставляет программа (модуль, библиотека), при этом API позволяет абстрагироваться от того, как именно эта функциональность реализована.

Если программу (модуль, библиотеку) рассматривать как чёрный ящик, то API — это множество «ручек», которые доступны пользователю данного ящика и которые он может вертеть и дёргать.

Программные компоненты взаимодействуют друг с другом посредством API. При этом обычно компоненты образуют иерархию — высокоуровневые компоненты используют API низкоуровневых компонентов, а те, в свою очередь, используют API ещё более низкоуровневых компонентов.

По такому принципу построены протоколы передачи данных по Интернет. Стандартный стек протоколов (сетевая модель OSI) содержит 7 уровней (от физического уровня передачи бит до уровня протоколов приложений, подобных протоколам HTTP и IMAP). Каждый уровень пользуется функциональностью предыдущего («нижележащего») уровня передачи данных и, в свою очередь, предоставляет нужную функциональность следующему («вышележащему») уровню.

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

API библиотеки функций и классов включает в себя описание сигнатур и семантики функций.

Сигнатура функции[ | ]

Сигнатура функции — часть общего объявления функции, позволяющая средствам трансляции идентифицировать функцию среди других. В различных языках программирования существуют разные представления о сигнатуре функции, что также тесно связано с возможностями перегрузки функций в этих языках.

Иногда различают сигнатуру вызова и сигнатуру реализации функции. Сигнатура вызова обычно составляется по синтаксической конструкции вызова функции с учётом сигнатуры области видимости данной функции, имени функции, последовательности фактических типов аргументов в вызове и типе результата. В сигнатуре реализации обычно участвуют некоторые элементы из синтаксической конструкции объявления функции: спецификатор области видимости функции, её имя и последовательность формальных типов аргументов.

Например, в языке программирования C++ простая функция однозначно опознаётся компилятором по её имени и последовательности типов её аргументов, что составляет сигнатуру функции в этом языке. Если функция является методом некоторого класса, то в сигнатуре будет участвовать и имя класса.

В языке программирования Java сигнатуру метода составляет его имя и последовательность типов параметров; тип возвращаемого значения в сигнатуре не участвует.

Семантика функции[ | ]

Семантика функции — это описание того, что данная функция делает. Семантика функции включает в себя описание того, что является результатом вычисления функции, как и от чего этот результат зависит. Обычно результат выполнения зависит только от значений аргументов функции, но в некоторых модулях есть понятие состояния. Тогда результат функции может зависеть от этого состояния, и, кроме того, результатом может стать изменение состояния. Логика этих зависимостей и изменений относится к семантике функции. Полным описанием семантики функций является исполняемый код функции или математическое определение функции.

API операционных систем. Проблемы, связанные с многообразием API[ | ]

Практически все операционные системы (UNIX, Windows, OS X и т. д.) имеют API, с помощью которого программисты могут создавать приложения для этой операционной системы. Главный API операционных систем — это множество системных вызовов.

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

С другой стороны, отличия в API различных операционных систем существенно затрудняют перено

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *