API расшифровываетс€ как Application Programming Interface (программный интерфейс приложени€). „то же это такое?

ѕо сути, это описание способов взаимодействи€ между программами, как они могут общатьс€ и передавать данные друг другу.

–ассмотрим пример из жизни:

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

¬ернемс€ к компьютерам. ѕредположим, что у нашей платформы доступного айти образовани€ Merion Academy есть интерфейс работы с клиентами - тот самый API, в котором есть определенные функции, куда можно отправить какой - то запрос, и получить ответ. ѕредставим, что у нашего API есть функци€ вернуть список курсов по Linux, на которые сейчас действует скидка 50% - в такой случае браузер должен сделать запрос к нашему API на получение такого списка курсов, а ответ получить эти данные и отрисовать на странице.

¬ажно учесть, что API интерфейсы не всемогущи - вы получите только те функции, которые заложил разработчик. Ќапример, если помимо курсов по Linux со скидкой 50% вы захотите еще получить прогноз погоды в селе Уƒобрые ѕчЄлыФ - то сорри, наш API пока так не умеет. ƒл€ добавлени€ каждой такой новой функции программист должен разработать ее.

API состоит из двух частей: это сам интерфейс взаимодействи€, скажем так некий мост, портал, окно, а втора€ часть - это его описание, которое отвечает на вопрос Уа как этой штукой то пользоватьс€?Ф

API

¬заимодействие может быть не только между клиентом и сервером, как в примере с нашей »“ платформой, но и между серверами. ѕредставьте: решили вы полететь в солнечный ƒубай, купили билетик на сайте, а он вам еще и погоду показывает.  ак же так! Ќеужели у компании по продаже билетов еще и метеорологические датчики по всему миру сто€т, которые сообщают о погоде?  онечно нет - сайт с билетами взаимодействует с каким - то сервисом погоды по API, который как раз занимаетс€ погодными данными. ј сайт с билетиками еще и скорее всего платит за каждый запрос небольшую денюжку.

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

API действительно делает жизнь разработчика удобнее, а чтобы работа с API не превратилась в бардак, оно стандартизировано. —амый попул€рный, это конечно же REST API, но перед тем как перейти к нему, скажем пару слов про SOAP (Service Object Access Protocol), который по€вилс€ несколько раньше и описывал правила синтаксиса дл€ сообщений запросов и ответов, отправл€емых веб-приложени€ми. ѕодробнее про SOAP - тут.

Ќу и все, кто поддерживал SOAP должны были обмениватьс€ XML-сообщени€ми между системами через HTTP или SMTP. XML (Extensible Markup Language), он же расшир€емый €зык разметки - это формат дл€ хранени€ и передачи данных, в котором данные размещены в тегах, что делает их легко читаемыми как дл€ компьютера, так и дл€ человека.

–азвива€сь, люди перешли на REST, который в отличии от SOAP не €вл€етс€ протоколом, а €вл€етс€ архитектурным стилем. ¬ SOAP приходилось писать в разы больше кода и заворачивать каждое сообщение в XML.

REST же делает данные доступными в качестве ресурсов, которые представлены уникальным URL-адресом, и можно запросить этот ресурс, указав его URL-адрес. Ќапример чтобы посмотреть свои подписки на ютубе нужно выполнить запрос на вот такой адрес https://www.youtube.com/feed/subscriptions.

¬еб-API, соответствующие стандартам подхода REST, называютс€ RESTful API. ќни используют различные HTTP-запросы дл€ работы с ресурсами, такие как GET - запрос, который используетс€ дл€ получени€ информации или POST, который в свою очередь нужен дл€ отправки данных.

REST

RESTful системы поддерживают обмен сообщени€ми в различных форматах, таких как самый обычный текст, HTML формат, YAML, XML и JSON, в то врем€ как SOAP разрешает только XML, как мы и сказали ранее. —амый попул€рный это конечно JavaScript Object Notation, он же JSON - простой и универсальный формат, который содержит в себе набор пар ключ:значение.

“акже хотим сказать про штуку, котора€ называетс€ gRPC (Remote Procedure Calls) котора€ в основном используетс€ дл€ св€зи между разными сервисами и работает очень быстро благодар€ тому что тут используетс€ протокол HTTP/2 который работает гораздо быстрее засчет вс€ких новинок вроде сжати€ хедеров, а вместо JSON или XML используетс€ формат Protocol Buffers (protobuf), который работает быстрее и потребл€ет меньше ресурсов при работе с ним. –аботает все это настолько быстро, что можно делать вызов к функции на другом сервере с такой же скоростью, как если бы она находилась на нашем. ѕодробнее про gRPC и Protobuf - тут

Ќу и не можем не сказать про модный GraphQL - это €зык запросов дл€ API который позвол€ет указывать точные данные, которые ему нужны, и упрощает получение и склейку данных из нескольких источников, поэтому разработчик может использовать один вызов API дл€ запроса всех необходимых ему данных.


—кидки 50% в Merion Academy

¬ыбрать курс