Веб -API — это интерфейс прикладного программирования (API) для веб-сервера или веб-браузера . Как концепция веб-разработки , она может быть связана с клиентской частью веб - приложения (включая любые используемые веб-фреймворки ). Серверный веб - API состоит из одной или нескольких общедоступных конечных точек для определенной системы сообщений запрос-ответ , обычно выраженной в формате JSON или XML с помощью веб-сервера на основе HTTP . Серверный API (SAPI) не считается серверным веб-API, если только он не доступен публично удаленному веб-приложению.
Клиентский веб - API — это программный интерфейс для расширения функциональности веб-браузера или другого HTTP-клиента. Первоначально они чаще всего представляли собой встроенные расширения браузера , однако большинство новых из них ориентированы на стандартизированные привязки JavaScript .
Фонд Mozilla Foundation создал спецификацию WebAPI, призванную помочь заменить собственные мобильные приложения приложениями HTML5 . [1] [2]
Google создал свою архитектуру Native Client , которая призвана помочь заменить небезопасные собственные плагины безопасными расширениями и приложениями, изолированными в песочнице . Они также сделали это портативным, используя модифицированный компилятор LLVM AOT .
Серверный веб - API состоит из одной или нескольких общедоступных конечных точек для определенной системы сообщений запрос-ответ , обычно выраженной в JSON или XML . Веб-API чаще всего предоставляется посредством веб-сервера на базе HTTP .
Мэшапы — это веб-приложения , которые сочетают использование нескольких серверных веб-API. [3] [4] [5] Веб-перехватчики — это серверные веб-API, которые принимают входные данные в виде универсального идентификатора ресурса (URI), который предназначен для использования в качестве удаленного именованного канала или типа обратного вызова , так что сервер действует как клиент для разыменования предоставленного URI и запуска события на другом сервере, который обрабатывает это событие, обеспечивая, таким образом, тип однорангового IPC .
Конечные точки — это важные аспекты взаимодействия с серверными веб-API, поскольку они определяют, где находятся ресурсы, к которым может получить доступ стороннее программное обеспечение. Обычно доступ осуществляется через URI, к которому отправляются HTTP-запросы и от которого, таким образом, ожидается ответ. Веб-API могут быть общедоступными или частными, для последнего требуется токен доступа . [6]
Конечные точки должны быть статичными, иначе нельзя гарантировать правильное функционирование взаимодействующего с ними программного обеспечения. Если местоположение ресурса изменится (а вместе с ним и конечная точка), то ранее написанное программное обеспечение выйдет из строя, поскольку требуемый ресурс больше нельзя будет найти в том же месте. Поскольку поставщики API по-прежнему хотят обновлять свои веб-API, многие из них внедрили систему управления версиями в URI, указывающую на конечную точку.
Веб-API Web 2.0 часто используют машинное взаимодействие, такое как REST и SOAP . Веб-API RESTful используют методы HTTP для доступа к ресурсам через параметры, закодированные в URL-адресе, и используют JSON или XML для передачи данных. Напротив, протоколы SOAP стандартизированы W3C и требуют использования XML в качестве формата полезной нагрузки, обычно через HTTP . Кроме того, веб-API на основе SOAP используют проверку XML для обеспечения структурной целостности сообщений за счет использования схем XML , предоставляемых документами WSDL . Документ WSDL точно определяет XML-сообщения и транспортные привязки веб-службы .
Серверные веб-API — это интерфейсы для взаимодействия внешнего мира с бизнес-логикой. Для многих компаний эта внутренняя бизнес-логика и связанная с ней интеллектуальная собственность — это то, что отличает их от других компаний и потенциально дает им конкурентное преимущество. Они не хотят, чтобы эта информация была раскрыта. Однако для обеспечения высокого качества веб-API необходим достаточный уровень документации. Одним из поставщиков API, который не только предоставляет документацию, но и ссылается на нее в сообщениях об ошибках, является Twilio. [7]
Однако теперь существуют каталоги популярных документированных серверных веб-API. [8]
Число доступных веб-API за последние годы постоянно росло, поскольку компании осознают возможности роста, связанные с использованием открытой платформы, с которой может взаимодействовать любой разработчик. ProgrammableWeb отслеживает более 24 000 веб-API, доступных в 2022 году, по сравнению со 105 в 2005 году.
Веб-API стали повсеместными. Существует несколько крупных программных приложений/сервисов, которые не предлагают ту или иную форму веб-API. Одной из наиболее распространенных форм взаимодействия с этими веб-API является встраивание внешних ресурсов, таких как твиты, комментарии Facebook, видео YouTube и т. д. На самом деле существуют очень успешные компании, такие как Disqus , основной услугой которых является предоставление встраиваемых инструментов. , например, многофункциональная система комментариев. [9] Любой веб-сайт, входящий в рейтинг TOP 100 Alexa Internet, использует API и/или предоставляет свои собственные API, что является очень четким показателем огромного масштаба и влияния веб-API в целом. [10]
По мере роста числа доступных веб-API были разработаны инструменты с открытым исходным кодом, обеспечивающие более сложный поиск и обнаружение. APIs.json предоставляет машиночитаемое описание API и его операций, а связанный проект APIs.io предлагает общедоступный список API с возможностью поиска на основе формата метаданных APIs.json. [11] [12]
Многие компании и организации в значительной степени полагаются на свою инфраструктуру веб-API для обслуживания своих основных бизнес-клиентов. В 2014 году Netflix получила около 5 миллиардов запросов к API, большинство из которых — через их частный API. [13]
Многие правительства собирают много данных, а некоторые правительства сейчас открывают доступ к этим данным. Интерфейсы, через которые эти данные обычно становятся доступными, — это веб-API. Веб-API позволяют любому разработчику получить доступ к таким данным, как «бюджет, общественные работы, преступность, юридические и другие данные агентства» [14] .
Примером популярного веб-API является API Astronomy Picture of the Day, которым управляет американское космическое агентство NASA . Это серверный API, используемый для получения фотографий космоса или других изображений, представляющих интерес для астрономов , а также метаданных об изображениях.
Согласно документации API, [15] API имеет одну конечную точку:
https://api.nasa.gov/planetary/apod
В документации указано, что эта конечная точка принимает запросы GET . Он требует от пользователя одну часть информации, ключ API , и принимает несколько других необязательных частей информации. Такие фрагменты информации известны как параметры . Параметры этого API записываются в формате, известном как строка запроса , которая отделяется знаком вопроса ( ?
) от конечной точки. Амперсанд ( ) &
отделяет параметры в строке запроса друг от друга. Вместе конечная точка и строка запроса образуют URL-адрес , который определяет, как будет реагировать API. Этот URL-адрес также известен как запрос или вызов API .
В приведенном ниже примере два параметра передаются (или передаются ) в API через строку запроса. Первый — это необходимый ключ API, а второй — необязательный параметр — дата запрошенной фотографии.
https://api.nasa.gov/planetary/apod?api_key=DEMO_KEY&date=1996-12-03
Посещение вышеуказанного URL-адреса в веб-браузере инициирует запрос GET, вызывающий API и показывающий пользователю результат, известный как возвращаемое значение или return . Этот API возвращает JSON — тип формата данных, предназначенный для понимания компьютерами, но который также легко читается человеком. В данном случае JSON содержит информацию о фотографии белого карлика :
{ "date" : "1996-12-03" , "explanation" : "Подобно бабочке, звезда-белый карлик начинает свою жизнь, сбрасывая кокон, в котором она была раньше. Однако в этой аналогии , Солнце было бы гусеницей, а выброшенная газовая оболочка стала бы самой красивой!\r Вышеупомянутый кокон, планетарная туманность\r, обозначенная NGC 2440, содержит одну из самых горячих известных звезд-белых карликов.\r Белый карлик можно увидеть как яркую точку в центре фотографии. Наше Солнце в конечном итоге станет «бабочкой белого карлика»,\r но не раньше, чем через 5 миллиардов лет. Приведенное выше изображение в искусственных цветах недавно стало достоянием общественности. домен\r и был обработан Ф. Гамильтоном.\r" , "hdurl" : "https://apod.nasa.gov/apod/image/9612/ngc2440_hst2_big.jpg" , "media_type" : "image" , "service_version" : "v1" , "title" : "Кокон нового белого карлика\r\nКредит:" , "url" : "https://apod.nasa.gov/apod/image/9612/ngc2440_hst2. jpg" }
Приведенный выше возврат API был переформатирован таким образом, чтобы имена элементов данных JSON, известные как ключи , появлялись в начале каждой строки. Последний из этих ключей с именем url
указывает URL-адрес, указывающий на фотографию:
https://apod.nasa.gov/apod/image/9612/ngc2440_hst2.jpg
Пройдя по указанному выше URL-адресу, пользователь веб-браузера увидит эту фотографию:
Хотя этот API может вызываться конечным пользователем через веб-браузер (как в этом примере), он предназначен для автоматического вызова программным обеспечением или программистами во время написания программного обеспечения. JSON предназначен для анализа компьютерной программой, которая извлекает URL-адрес фотографии и другие метаданные. Полученную фотографию можно встроить на веб-сайт, автоматически отправить в текстовом сообщении или использовать для любой другой цели, предусмотренной разработчиком программного обеспечения.
{{cite journal}}
: Требуется цитировать журнал |journal=
( помощь )