Что такое API и как его использовать?

API, что означает Application Programming Interface, является программным интерфейсом приложения, который в IT-сфере часто сокращается до Апи (с ударением на А). Он описывает методы взаимодействия между программами, определяет, как они могут обмениваться данными и взаимодействовать друг с другом. Приведём пример из повседневной жизни: когда вы посещаете любимый ресторан, вы взаимодействуете с официантом, который может предоставить вам меню, принять заказ, предоставить счет, ответить на вопросы о блюдах или ответить, почему никто вас не предупредил, что белые кругляшки в форме таблеток это прессованные салфетки, а не что-то съедобное. Официант является интерфейсом между вами и рестораном, скрывая сложности, связанные с процессом приготовления блюд, расчета счетов и других деталей. В компьютерной сфере API представляет функции, которые можно вызывать для отправки запросов и получения ответов. Допустим, у некой образовательной платформы (рекламы не будет, т.к. они нам не заплатили: () есть API для работы с клиентами, который содержит функцию, возвращающую список курсов по Linux, которые в течении недели доступны со скидкой в 50%. В этом случае браузер может отправить запрос к API для получения списка курсов и отобразить его на странице в ответ. Важно понимать, что API интерфейсы не обладают безграничными возможностями - они предоставляют только те функции, которые были заданы разработчиком. Например, если вы хотите получить прогноз погоды для села "Базарные Матаки", помимо 50% скидки на курсы по Linux, то этот API не может предоставить эту функцию. Каждая новая функция должна быть разработана программистом. Другими словами, подобно ситуации с официантом, нельзя попросить его прочитать книгу о том, как программировать на Java - это вне его функционала. Таким образом, API состоит из двух компонентов: интерфейс взаимодействия, который можно представить как мост, портал или окно, и описание, которое объясняет, как использовать этот интерфейс. Взаимодействие может происходить не только между клиентом и сервером, как в примере с нашей платформой, но и между серверами. Представьте, что вы решили отправиться в солнечный Дубай и купили билет на сайте, который показывает также и погоду. Вы, конечно же, задумались: неужели у компании, которая занимается продажей билетов, есть метеорологические датчики по всему миру, которые сообщают о погоде? Однако, это не так - сайт с билетами взаимодействует с сервисом погоды через API, который отвечает за погодные данные. Сайт с билетами, скорее всего, платит за каждый запрос к сервису погоды небольшую сумму. Таким образом, API может стать полноценным бизнесом. Кроме того, API может быть не только у веб-сервисов, где общение происходит по протоколу HTTP. Он также присутствует в операционных системах для взаимодействия с самой операционкой и железом. Например, если вы создаете свой аналог Instagram****, вам потребуется использовать API системы для работы с камерой на устройстве, которая уже знает, как работать с камерой, вместо того чтобы пытаться создавать что-то новое самостоятельно для миллиона разных устройств. API сильно упрощает жизнь разработчиков, и во избежание беспорядка в работе с ними, необходимо их стандартизировать. Сейчас же давайте разберемся со стандартами. REST API (рест апи) является самым популярным, но перед тем, как перейти к нему, давайте рассмотрим SOAP (Service Object Access Protocol), который появился немного раньше и определял синтаксис для запросов и ответов, отправляемых веб-приложениями. Все, кто использовал SOAP, обменивались XML-сообщениями (экс-эм-эль) между системами через HTTP или SMTP. XML (Extensible markup language) - это формат для хранения и передачи данных, в котором данные размещены в тегах, что делает их легко читаемыми как для компьютера, так и для человека. С развитием технологий, люди перешли на использование REST вместо SOAP. REST не является протоколом, а является архитектурным стилем. По сравнению с SOAP, REST сокращает количество необходимого кода и избавляет от необходимости заворачивать каждое сообщение в XML и украшать его шапкой и шарфом. В REST данные доступны в виде ресурсов, которые представлены уникальным URL-адресом, и их можно запросить, указав этот адрес. Веб-API, соответствующие стандартам REST, называются RESTful API. Они используют различные HTTP-запросы, такие как GET и POST, для работы с ресурсами. RESTful системы поддерживают обмен сообщениями в различных форматах, включая текст, HTML, YAML, XML и JSON, который является самым популярным. Это делает их более гибкими и универсальными. Также хотелось бы упомянуть про gRPC - протокол удаленных вызовов (Remote Procedure Call, RPC), который использует протокол HTTP/2 для связи между разными сервисами. Он работает очень быстро благодаря использованию сжатия хедеров и формата Protocol Buffers (protobuf), который работает быстрее и потребляет меньше ресурсов при работе с ним, в отличие от форматов JSON и XML. Это позволяет делать вызов к функции на другом сервере с такой же скоростью, как если бы она находилась на нашем. Ну и не можем не сказать про модный GraphQL - язык запросов для API, который позволяет указывать точные данные, которые нужны, и упрощает получение и склейку данных из нескольких источников. Разработчик может использовать один вызов API для запроса всех необходимых ему данных. Это уменьшает количество запросов, необходимых для получения информации, и повышает эффективность работы приложения. Для более легкого понимания GraphQL можно использовать следующую метафору: представьте, что вы идете в магазин за продуктами, и вам нужно купить молоко, яйца и хлеб. Обычно, чтобы выполнить эти задачи, вам нужно посетить три разных отдела магазина. С GraphQL же все намного проще - вы просто передаете в API список продуктов, которые вам нужны, и затем запрашиваете все необходимые детали, чтобы получить максимально точный ответ.
Читайте также нашу статью про IP