API

редактировать
Набор определений подпрограмм, протоколов и инструментов для создания программного обеспечения и приложений

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

Содержание
  • 1 Цель
  • 2 История термина
  • 3 Использование
    • 3.1 Библиотеки и платформы
    • 3.2 Операционные системы
    • 3.3 Удаленные API-интерфейсы
    • 3.4 Веб-API
  • 4 Дизайн
  • 5 Политики выпуска
    • 5.1 Последствия для общедоступного API
  • 6 Документация
  • 7 Споры об авторских правах
  • 8 Примеры
  • 9 См. Также
  • 10 Ссылки
  • 11 Дополнительная литература
Цель

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

История термина
Диаграмма 1978 года, предлагающая расширить идею API, чтобы стать общим программным интерфейсом, за пределы только прикладных программ.

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

Идея API намного старше термина. Британские ученые-компьютерщики Уилкс и Уиллер работали над модульными библиотеками программного обеспечения в 1940-х годах для компьютера EDSAC. Джошуа Блох утверждает, что Уилкс и Уиллер «скрыто изобрели» API, потому что это скорее концепция, которая открыта, чем изобретена.

Хотя люди, придумавшие термин API, внедряли программное обеспечение на Univac 1108, целью их API было сделать возможными аппаратно-независимые программы.

Термин «интерфейс прикладной программы» (без суффикса -ing) впервые был записан в статье так называемые структуры данных и методы удаленной компьютерной графики, представленные на конференции AFIPS в 1968 году. Авторы этой статьи используют этот термин для описания взаимодействия приложения - графической программы в этом корпус - с остальной частью компьютерной системы. Согласованный интерфейс приложения (состоящий из вызовов подпрограмм Fortran ) был предназначен для того, чтобы освободить программиста от работы с идиосинкразиями графического устройства отображения и обеспечить аппаратную независимость, если компьютер или дисплей были заменены.

Термин был введен в область баз данных C. Дж. Дэйт в статье 1974 года под названием Реляционный и сетевой подходы: сравнение интерфейса прикладного программирования. API стал частью структуры ANSI / SPARC для систем управления базами данных. Эта структура обрабатывала интерфейс прикладного программирования отдельно от других интерфейсов, таких как интерфейс запросов. Специалисты по базам данных в 1970-х годах заметили, что эти разные интерфейсы можно комбинировать; достаточно богатый интерфейс приложения мог бы поддерживать и другие интерфейсы.

Это наблюдение привело к API, которые поддерживали все типы программирования, а не только программирование приложений. К 1990 году технологом Карлом Маламудом

API был определен просто как «набор услуг, доступных программисту для выполнения определенных задач». Концепция API была снова расширена с появлением веб-API.. Рой Филдинг в диссертации «Архитектурные стили и проектирование сетевых программных архитектур» в UC Irvine в 2000 г. описал перенос репрезентативного состояния (REST) ​​и описал идею «сетевого интерфейса прикладного программирования», который Филдинг противопоставил традиционным «библиотечным» API. Веб-API XML и JSON получили широкое коммерческое применение, начиная с 2000 года и продолжая 2020.

Веб-API теперь является наиболее распространенным значением термина API. При таком использовании термин API частично перекликается по значению с терминами протокол связи и вызов удаленной процедуры.

Использование

Библиотеки и фреймворки

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

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

Отделение API от его реализации может позволить программам, написанным на одном языке, использовать библиотеку, написанную на другом. Например, поскольку Scala и Java компилируются в совместимый байт-код , разработчики Scala могут воспользоваться любым Java API.

Использование API может варьироваться в зависимости от типа используемого языка программирования. API для процедурного языка , такого как Lua, может состоять в основном из базовых подпрограмм для выполнения кода, управления данными или обработки ошибок, в то время как API для объектно-ориентированного языка, например Java, предоставит спецификацию классов, а его методы класса.

языковые привязки также являются API. Сопоставляя функции и возможности одного языка с интерфейсом, реализованным на другом языке, языковая привязка позволяет использовать библиотеку или службу, написанную на одном языке, при разработке на другом языке. Такие инструменты, как SWIG и F2PY, генератор интерфейса Fortran -to- Python, облегчают создание таких интерфейсов.

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

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

Работа systems

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

Linux и Berkeley Software Distribution являются примерами операционных систем, реализующих API-интерфейсы POSIX.

Microsoft продемонстрировала твердую приверженность обратно-совместимому API, особенно в рамках своего Библиотека Windows API (Win32), поэтому более старые приложения могут работать в более новых версиях Windows с использованием параметра для конкретного исполняемого файла, называемого «Режим совместимости».

API отличается от приложения двоичный интерфейс (ABI) в том смысле, что API основан на исходном коде, а ABI - на основе двоичного кода . Например, POSIX предоставляет API, а Linux Standard Base предоставляет ABI.

Remote APIs

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

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

Модификация прокси-объекта также приведет к соответствующей модификации удаленного объекта.

Веб-API

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

При использовании в контексте веб-разработки, API обычно определяется как набор спецификаций, таких как сообщения запроса протокола передачи гипертекста (HTTP), а также определение структуры ответных сообщений, обычно на расширяемом языке разметки (XML ) или формат JavaScript Object Notation (JSON ). Примером может быть API транспортной компании, который можно добавить на веб-сайт, ориентированный на электронную коммерцию, чтобы упростить заказ услуг доставки и автоматически включать текущие тарифы на доставку, без необходимости разработчика сайта вводить таблицу тарифов грузоотправителя в веб-базу данных. Хотя «веб-API» исторически был практически синонимом веб-службы, недавняя тенденция (так называемая Web 2.0 ) заключалась в отходе от протокола простого доступа к объектам (SOAP ) на основе веб-сервисов и сервис-ориентированной архитектуры (SOA) для более прямой репрезентативной передачи состояния (REST) ​​в стиле веб-ресурсов и ресурсов -ориентированная архитектура (ROA). Частично эта тенденция связана с движением семантической паутины к структуре описания ресурсов (RDF), концепции для продвижения веб-технологий инженерии онтологий. Веб-API позволяют комбинировать несколько API в новые приложения, известные как гибридные приложения. В пространстве социальных сетей веб-API позволили веб-сообществам облегчить обмен контентом и данными между сообществами и приложениями. Таким образом, контент, который динамически создается в одном месте, можно публиковать и обновлять в нескольких местах в Интернете. Например, REST API Twitter позволяет разработчикам получать доступ к основным данным Twitter, а Search API предоставляет разработчикам методы взаимодействия с данными поиска Twitter и трендов.

Дизайн

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

Политики выпуска

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

Основные политики для выпуска API:

  • Частный : API предназначен только для внутреннего использования компанией.
  • Партнер : API могут использовать только определенные деловые партнеры. Например, компании по аренде автомобилей, такие как Uber и Lyft, позволяют утвержденным сторонним разработчикам напрямую заказывать поездки из своих приложений. Это позволяет компаниям осуществлять контроль качества, определяя, какие приложения имеют доступ к API, и обеспечивает им дополнительный поток доходов.
  • Public : API доступен для использования широкой публикой. Например, Microsoft делает Microsoft Windows API общедоступным, а Apple выпускает свои API Carbon и Cocoa, чтобы можно было писать программное обеспечение. для своих платформ. Не все общедоступные API доступны всем. Например, интернет-провайдеры, такие как Cloudflare или Voxility, используют RESTful API, чтобы позволить клиентам и торговым посредникам получать доступ к информации об их инфраструктуре, статистике DDoS, производительности сети или элементам управления на панели управления. Доступ к таким API предоставляется либо «токенами API», либо проверками статуса клиента.

Последствия для публичного API

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

Когда части публично представленного API подвержены изменениям и, следовательно, нестабильны, такие части конкретного API должны быть явно задокументированы как «нестабильные». Например, в библиотеке Google Guava части, которые считаются нестабильными и которые могут скоро измениться, помечены аннотацией Java @Beta.

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

Клиентский код может содержать новаторские или гибкие способы использования, которые не были предусмотрены разработчиками API. Другими словами, для библиотеки со значительной базой пользователей, когда элемент становится частью общедоступного API, его можно использовать по-разному. 19 февраля 2020 года Akamai опубликовали свой ежегодный отчет «Состояние Интернета», демонстрирующий растущую тенденцию киберпреступников, нацеленных на публичные платформы API в финансовых службах по всему миру. С декабря 2017 года по ноябрь 2019 года Akamai стал свидетелем 85,42 миллиарда атак с нарушением учетных данных. Около 20%, или 16,55 миллиарда, были против имен хостов, определенных как конечные точки API. Из них 473,5 миллиона нацелены на организации сектора финансовых услуг.

Документация

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

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

Традиционные файлы документации часто представлены через систему документации, такую ​​как Javadoc или Pydoc, которая имеет неизменный внешний вид и структуру. Однако типы содержимого, включенного в документацию, различаются от API к API.

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

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

Документация по API может быть дополнена метаданными, например Java аннотации. Эти метаданные могут использоваться компилятором, инструментами и средой выполнения для реализации настраиваемого поведения или настраиваемой обработки.

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

Споры об авторских правах

В 2010 году корпорация Oracle подала в суд на Google за распространение новой реализации Java, встроенной в операционную систему Android. Google не получил разрешения на воспроизведение Java API, хотя разрешение было дано аналогичному проекту OpenJDK. Судья Уильям Алсуп постановил в деле Oracle против Google, что API-интерфейсы не могут быть защищены авторским правом в США и что победа Oracle значительно расширила бы защиту авторских прав и позволила бы защищать авторские права на простое программное обеспечение. команды:

Принять претензию Oracle означало бы разрешить кому-либо создать авторское право на одну версию кода для выполнения системы команд и тем самым запретить всем остальным писать ее разные версии для выполнения всех или части одних и тех же команд.

Однако в 2014 году решение Алсупа было отменено при подаче апелляции в Апелляционный суд Федерального округа, хотя вопрос о том, является ли такое использование API добросовестным использованием, остался нерешенным.

В 2016 году после двухнедельного судебного разбирательства жюри решило, что повторная реализация Google API Java является добросовестным использованием, но Oracle пообещала обжаловать это решение. Oracle выиграла апелляцию, поскольку Апелляционный суд Федерального округа постановил, что использование API Google не соответствует критериям добросовестного использования. В 2019 году Google подал апелляцию в Верховный суд США по поводу постановлений о защите авторских прав и добросовестного использования, и Верховный суд удовлетворил требования.

Примеры
См. Также
Последняя правка сделана 2021-06-07 22:11:39
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте