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

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

Веб-API

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

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

API-интерфейсы браузера

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

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

Сторонние API

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

"API – это уже не просто инструменты для поддержки ваших приложений, а самостоятельные продукты или платформы".

Поскольку API-интерфейсы быстро набирают популярность в мире технологий, мы наблюдаем огромный рост их доступности за последние двадцать лет (см. Malamud’s Analyzing Novell Networks from 1959). Давайте быстро выделим два примера сторонних API:

  • API НАСА: сделать данные НАСА, включая изображения, максимально доступными для разработчиков приложений.
  • Общедоступные API: общий список бесплатных API для использования в программном обеспечении и веб-разработке.

Давайте кратко рассмотрим API NASA. Одним из самых популярных сайтов НАСА является Астрономическая картинка дня (фактически, во всех федеральных агентствах). НАСА утверждает, что оно так же популярно, как видео Джастина Бибера. Конечная точка API APOD (астрономическое изображение дня) (к этому термину мы вернемся позже) структурирует изображения и связанные с ними метаданные, которые можно использовать в других приложениях. Попробуйте здесь с демонстрационным ключом NASA (к этому термину мы еще вернемся позже). Просто убедитесь, что вы установили средство форматирования JSON для своего браузера, чтобы упростить понимание данных, я бы рекомендовал JSONView.

Можем ли мы использовать браузер и сторонние API вместе?
Да, можем! Давайте возьмем вышеупомянутый API Fetch браузера и создадим запрос, чтобы получить астрономическое изображение дня НАСА. Вот краткий пример того, как Codepen воссоздает свой веб-сайт APOD. Что происходит за кулисами? Базовый запрос на выборку очень прост в настройке.

В приведенном выше примере мы используем простейшую форму fetch(), которая принимает один аргумент — нужный вам ресурс — и не возвращает напрямую тело ответа JSON (подробнее об этом термине позже), а вместо этого возвращает объект Response, представляющий весь HTTP-ответ. Таким образом, чтобы получить содержимое тела ответа JSON, вам нужно использовать метод json(), который возвращает результат анализа текста тела ответа в виде JSON. Вы можете прочитать больше информации здесь, в разделе Использование Fetch API.

Как работает Интернет

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

Что именно происходит? (Слишком упрощенная история)

Когда вы вводите веб-адрес в браузере:

  1. Браузер переходит на сервер DNS (система доменных имен) и находит реальный адрес сервера (IP-адрес веб-сайта), на котором находится веб-сайт, затем
  2. Браузер отправляет запрос HTTP (протокол передачи гипертекста) на сервер с просьбой отправить веб-сайт обратно клиенту (браузеру), затем
  3. Если сервер успешно примет запрос, он ответит сообщением 200 OK и отправит веб-сайт обратно клиенту, и, наконец,
  4. Браузер отображает веб-сайт для вас.

Небольшое примечание о DNS
Настоящие веб-адреса — это не красивые запоминающиеся строки, которые вы вводите в адресную строку, чтобы найти свои любимые веб-сайты. Это специальные числа, которые выглядят так: 63.245.215.20. Они называются IP-адресами и представляют уникальное местоположение в Интернете. DNS-серверы преобразуют удобные для человека домены (например, mozilla.org) в числовые IP-адреса (например, 151.106.5.172).

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

Что такое протокол передачи гипертекста (HTTP)?

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

Давайте сделаем простой HTTP-запрос
Отправьте HTTP-сообщение: давайте попробуем проверить, что происходит за кулисами, с помощью APOD API НАСА. Чтобы сделать этот запрос в браузере: 1) откройте новую вкладку, 2) откройте DevTools в браузере, затем просмотрите сетевые запросы и 3) перейти по URL-адресу.

Просмотр ответа, отправленного сервером

Мы можем воспроизвести приведенный выше запрос с помощью инструмента платформы API, такого как Postman: 1) Перейдите в веб-приложение Postman, 2) используйте свои учетные данные для создания учетной записи или войдите в систему и создайте базовый HTTP-запрос и 3) отправьте запрос `GET` с URL-адресом API APOD https://api.nasa.gov/planetary/apod?api_key=DEMO_KEY.

Идентификация ресурсов в Интернете

Цель HTTP-запроса называется ресурс (документ, фотография, что-то еще). Каждый ресурс идентифицируется унифицированным идентификатором ресурса (URI) (URL — это наиболее распространенная форма URI, известная как веб-адреса), используемым в протоколе HTTP для идентификации ресурсов. Давайте взглянем на некоторые примеры URL-адресов.

Здесь вы можете найти больше информации об анатомии URL.

ОТДЫХ — хорошее и плохое

Representational State Transfer (REST) ​​— это архитектурный стиль, который определяет дизайн и разработку процессов для взаимодействия с ресурсами в Интернете. API, который соответствует большинству или всем его руководящим ограничениям, считается RESTful API. Более подробное руководство см. здесь.

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

Каждый RESTful API начинается с того, что Fielding называет Null Style. Все начинается с потребностей системы в целом, без ограничений, а затем постепенно выявляются и применяются ограничения к элементам системы, чтобы позволить силам, влияющим на поведение системы, течь естественным образом, в гармонии с система. Этот стиль подчеркивает сдержанность и понимание системного контекста. Итак, давайте быстро разберемся, что мы должны знать из его направляющих ограничений.

Клиент-сервер

  • Что это такое?Разделение задач является движущим принципом этого ограничения, отделяя пользовательский интерфейс (клиент) от хранилища данных. (сервер).
  • Преимущество. Тем самым мы улучшаем переносимость между несколькими платформами и улучшаем масштабируемость за счет упрощения серверных компонентов. Такое разделение позволяет каждому компоненту развиваться независимо.

без гражданства

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

Кэш

  • Что это такое? – добавление компонентов кэша для формирования архитектурного стиля клиент-кэш-сервер без сохранения состояния в REST. Кэш действует как посредник между клиентом и сервером, в котором ответы на предыдущие запросы могут, если они считаются кэшируемыми, повторно использоваться в ответ на более поздние запросы, которые эквивалентны и могут привести к ответу, идентичному ответу в кеше, если запрос должен быть перенаправлен на сервер.
  • Полезность — возможность частично или полностью устранить взаимодействия, повысить эффективность и производительность, воспринимаемую пользователями.
  • Плохо. Кэш может снизить надежность, если устаревшие данные в кеше значительно отличаются от данных, которые были бы получены, если бы запрос был отправлен непосредственно на сервер.

Единый интерфейс

  • Что это такое? — Применение общности или единообразия между интерфейсами компонентов.
  • Преимущества: упрощена общая архитектура системы и улучшена видимость взаимодействий. Реализации не связаны с сервисами, которые они предоставляют, что способствует независимой эволюции.
  • Плохое — снижает эффективность, поскольку информация передается в стандартизированной форме, а не в той, которая специфична для нужд приложения.

Многоуровневая система

  • Что это такое? — Архитектура, состоящая из иерархических уровней, содержащих поведение компонентов, так что каждый компонент не может видеть за пределами непосредственного уровня, с которым они взаимодействуют.
  • Преимущество: уровни можно использовать для инкапсуляции устаревших сервисов и для защиты новых сервисов от устаревших клиентов. Промежуточные звенья также можно использовать для повышения масштабируемости системы, обеспечивая балансировку нагрузки служб между несколькими сетями и процессорами.
  • Плохие. Они увеличивают нагрузку и задержку при обработке данных, снижая воспринимаемую пользователями производительность. Для сетевой системы, поддерживающей ограничения кэша, это может быть компенсировано преимуществами общего кэширования на посредниках. Размещение общих кэшей на границах домена организации может привести к значительному повышению производительности.

Заключение

Более подробное объяснение дизайна, структурирования и поддержки RESTful API см. здесь.

Спасибо за прочтение.

Эта статья изначально была размещена здесь.